2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[OCI]Autonomous Databasae:File Storage ServiceのファイルシステムをAutonomous Databaseにアタッチしてみた

Last updated at Posted at 2022-11-16

はじめに

プライベート・エンドポイントで構成されているAutonomous DatabaseにNFSファイルシステムをアタッチ(マウント)できるようになったので早速試してみました。

オンプレミス環境とOCIをIPSec VPNやFastConnectで接続している場合、FSSのファイルシステムをオンプレミスのサーバでマウントすることも可能なので、
・オンプレミス側のDBサーバでFSSファイルシステムをマウント
・オンプレミスのDBでFSSファイルシステムに対するディレクトリ・オブジェクト作成
・expdpでオンプレミスのDBの内容をディレクトリ・オブジェクトにエクスポート
・Autonomous DatabaseにFSSファイルシステムをアタッチ
・impdpでFSSファイルシステム内のダンプファイルをAutonomous Databaseにインポート
といったことも可能になりますね。
スクリーンショット 2022-11-16 13.59.10.png

1. File Storage Serviceのファイルシステムの作成

Autonomous Databaseにアタッチするためのファイルシステムを作成します。
コンソールメニューから「ファイル・ストレージ」に移動します。
スクリーンショット 2022-11-16 10.24.14.png
「ファイルシステムの作成」をクリックします。
スクリーンショット 2022-11-16 10.25.00.png
ファイルシステムの作成ウィザードが表示されます。
スクリーンショット 2022-11-16 10.25.58.png
「ファイル・システム情報」セクションの「詳細の編集」をクリックします。
スクリーンショット 2022-11-16 10.26.08.png
名前を変更します。今回はファイルシステム名を「MYFSS」としました。
スクリーンショット 2022-11-16 13.11.03.png
「マウント・ターゲット情報」セクションの「詳細の編集」をクリックします。
スクリーンショット 2022-11-16 13.19.36.png
マウント・ターゲット名を変更します。今回はマウント・ターゲット名「MYFSSTARGET」としました。
「拡張オプションの表示」をクリックします。
スクリーンショット 2022-11-16 13.21.33.png
ホスト名を入力します。今回はホスト名をmyfssとしました。
入力が完了したら「作成」をクリックします。

スクリーンショット 2022-11-16 13.12.11.png
なお、File Storage ServiceのファイルシステムをAutonomous Databaseにアタッチする際に、IPアドレスは使用できません。ホスト名(FQDN)を使用する必要があります。

ファイルシステム「MYFSS」が作成できました。
スクリーンショット 2022-11-16 13.12.49.png

2. File Storage ServiceのファイルシステムをComputeインスタンスにマウント

Autonomous Databaseにファイルシステムをアタッチするのに必須ではありませんが、ファイルシステム内にファイルを作成するために、Oracle LinuxのComputeインスタンスにFile Storage Serviceのファイルシステムをマウントします。
マウントするためのコマンドはファイルシステムの詳細画面からエクスポートパスの詳細画面に移動し、「マウントコマンド」をクリックすると確認できます。
スクリーンショット 2022-11-16 12.52.03.png

マウントポイントとなるディレクトリ/mnt/MYFSSを作成し、パーミッションを変更します。
mountコマンドで/mnt/MYFSSにFile Storage Serviceのファイルシステムをマウントします。

[opc@tools ~]$ sudo mkdir -p /mnt/MYFSS
[opc@tools ~]$ sudo chmod 777 /mnt/MYFSS
[opc@tools ~]$ sudo mount myfsstarget.privatesubnet.vcn1.oraclevcn.com:/MYFSS /mnt/MYFSS
[opc@tools ~]$ 

Autonomous Databaseからファイルシステムへのアクセスをテストするためのファイルtest_data.txtを作成します。

[opc@tools ~]$ cat <<'EOL' >>/mnt/MYFSS/test_data.txt
> 1,RUN
> 2,DMC
> 3,Jam Master Jay
> EOL
[opc@tools ~]$ ls -l /mnt/MYFSS/test_data.txt
-rw-rw-r--. 1 opc opc 29 Nov 16 03:26 /mnt/MYFSS/test_data.txt
[opc@tools ~]$ 
[opc@tools ~]$ cat /mnt/MYFSS/test_data.txt
1,RUN
2,DMC
3,Jam Master Jay
[opc@tools ~]$

3. Autonomous DatabaseにFile Storage Serviceのファイルシステムをアタッチ

SQL*PlusからAutonomous Databaseに接続します。

ディレクトリオブジェクトを作成します。

SQL> CREATE DIRECTORY FSS_DIR AS 'FSS';

ディレクトリが作成されました。

SQL>

DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEMプロシージャを使用して、ファイルシステムをAutonomous Databaseにアタッチします。

指定する各パラメータは以下の通りです。

パラメータ
file_system_name 作成するファイルアタッチの名前
file_system_location ファイルシステムのパス
directory_name ファイルシステムをマウントするディレクトリオブジェクト名
description 説明

なお、ファイルシステムの名前に"-"が含まれる場合は、'"xxx-xxx"'のようにダブルクウォートで囲んだ上でシングルクウォートで囲む必要があります。

では、実際にアタッチしてみます。

SQL> BEGIN
  2     DBMS_CLOUD_ADMIN.ATTACH_FILE_SYSTEM(
  3      file_system_name      => 'MYFSS',
  4      file_system_location  => 'myfsstarget.privatesubnet.vcn1.oraclevcn.com:/MYFSS',
  5      directory_name        => 'FSS_DIR',
  6      description           => 'Mounting a NFS'
  7     );
  8  END;
  9  /

PL/SQLプロシージャが正常に完了しました。

SQL>

正常に完了しましたので、登録内容を確認してみます。
ファイルシステムのアタッチに関する情報は、dba_cloud_file_systemsビューで確認できます。

SQL> desc dba_cloud_file_systems
 名前                                       NULL?    型
 ----------------------------------------- -------- ----------------------------
 FILE_SYSTEM_NAME				                    VARCHAR2(128)
 FILE_SYSTEM_LOCATION				                VARCHAR2(4000)
 DIRECTORY_NAME 				                    VARCHAR2(128)
 DIRECTORY_PATH 				                    VARCHAR2(4000)
 DESCRIPTION					                    VARCHAR2(4000)
 CREATION_TIME					                    TIMESTAMP(6) WITH TIME ZONE
 UPDATE_TIME					                    TIMESTAMP(6) WITH TIME ZONE

SQL>

実際に確認してみます。

SQL> SELECT 
  2  	file_system_name, 
  3  	file_system_location,
  4  	directory_path
  5  FROM dba_cloud_file_systems;

FILE_SYSTEM_NAME
--------------------------------------------------------------------------------
FILE_SYSTEM_LOCATION
--------------------------------------------------------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------
MYFSS
myfsstarget.privatesubnet.vcn1.oraclevcn.com:/MYFSS
/u03/dbfs/ED8B6F380F7E39D2E0532114000AD95F/data/FSS/


SQL>

正しく登録されていることが確認できたので、DBMS_CLOUD.LIST_FILESファンクションを使用して、ディレクトリ内(=ファイルシステム内)にあるファイルの一覧を取得してみます。

SQL> SELECT object_name FROM DBMS_CLOUD.LIST_FILES('FSS_DIR');

OBJECT_NAME
--------------------------------------------------------------------------------
test_data.txt

SQL>

ディレクトリ内(=ファイルシステム内)に先ほどComputeインスタンスから作成したtest_data.txtがあることが、Autonomous Databaseから確認できました。

ファイルの存在が確認できたので、UTL_FILEパッケージを使用して、ファイルの中身を確認してみます。

SQL> set serveroutput on
SQL> DECLARE
  2    l_file         UTL_FILE.FILE_TYPE;
  3    l_location     VARCHAR2(100) := 'FSS_DIR';
  4    l_filename     VARCHAR2(100) := 'test_data.txt';
  5    l_text         VARCHAR2(32767);
  6  BEGIN
  7    l_file := UTL_FILE.FOPEN(l_location, l_filename, 'r');
  8    LOOP
  9      BEGIN
 10        UTL_FILE.GET_LINE(l_file, l_text, 32767);
 11        DBMS_OUTPUT.PUT_LINE(l_text);
 12        EXCEPTION
 13          WHEN NO_DATA_FOUND THEN EXIT;
 14      END;
 15    END LOOP;
 16    UTL_FILE.FCLOSE(l_file);
 17  END;
 18  /
1,RUN
2,DMC
3,Jam Master Jay

PL/SQLプロシージャが正常に完了しました。

SQL>

アタッチしたファイルシステム内にあるファイルtest_data.txtの内容が確認できました。

参考資料

Access Network File System from Autonomous Database
How to Attach a File System to your Autonomous Database
UTL_FILE

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?