はじめに
Oracle Database には 表領域を利用してファイルシステムを構成し、Oracle Client から操作・使用する Oracle Database File System (DBFS) があります。Oracle Client を必要としない Oracle File System (OFS)と異なり、DBFSクライアント・コマンドライン・インタフェースを使用して操作します。
SecureFilesストアの設定
Database File System (DBFS)はいくつかのタイプの「ストア」で提供されますが、ここでは SecureFiles ストアを使用した実装を用います。構成は DBFSサーバー、DBFSクライアントが必要で以下を想定します。
DBFSサーバー: Database サーバで表領域をSecureFilesストアとして提供
DBFSクライアント: clientモジュール “dbfs_client”を使用した操作を想定
ちなみにDBFSへの接続は他に PL/SQL, ファイルシステム・マウント, DBFSリンクなどの選択肢があります。
参考にしたサイトURL
https://docs.oracle.com/cd/F19136_01/adlob/introducing-database-file-system.html#GUID-B7A83817-F0D6-4A09-AE98-DFC966783109
DBFS 環境構築手順
1) FUSEのインストール
[root@ofstest05 ~] # yum install fuse
OSの再起動
2) 表領域の作成
Database EE 19c (19.17)での作業 / DBFS作成用のPDBを作成 (DBFSPDB)
CREATE BIGFILE TABLESPACE "DBFS_FS1" DATAFILE SIZE 104857600
AUTOEXTEND ON NEXT 104857600 MAXSIZE 33554431M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
3) DBFS領域のオーナー(ユーザ)作成
scott 作成とロール付与
GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO scott IDENTIFIED BY tiger;
GRANT dbfs_role to scott;
4) DBFS ファイルシステムの作成
参考にしたURL
https://docs.oracle.com/cd/F19136_01/adlob/DBFS-securefiles-store.html#GUID-31709BF1-B980-4252-9428-7E6FE86612A5
scottユーザによる作業
[ストアの作成]
DECLARE
BEGIN
DBMS_DBFS_SFS.CREATEFILESYSTEM(
store_name => 'FS1',
tbl_name => null,
tbl_tbs => DBFS_FS1,
use_bf => false
);
COMMIT;
END;
/
[DBFS コンテンツAPIに登録]
DECLARE
BEGIN
DBMS_DBFS_CONTENT.REGISTERSTORE(
store_name => 'FS1',
provider_name => 'anything',
provider_package => 'dbms_dbfs_sfs'
);
COMMIT;
END;
/
[DBFS マウント]
DECLARE
BEGIN
DBMS_DBFS_CONTENT.MOUNTSTORE(
store_name => 'FS1',
store_mount => 'mnt1'
);
COMMIT;
END;
/
[DBFS 初期化]
EXEC DBMS_DBFS_SFS.INITFS(store_name=> 'FS1');
作成したDBFS領域の確認
SQL> select pathname from dbfs_content;
DBFS_CLIENT操作手順
1) Oracle Client のインストール
DBサーバー上の作業になるので省略
tnsnames.ora に以下を追記 - DBFS表領域を作成したpdb接続文字列
dbfspdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbfstest05)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbfspdb)
)
)
2) シンボリック・リンクの作成とライブラリ(環境変数のセット)
Top issues in DBFS mount (Doc ID 2247907.1)を参考にシンボリック・リンク作成
[root@dbfstest05 ~]# cd /usr/lib64
[root@dbfstest05 lib64]# ln -s libfuse.so.2 libfuse.so
[root@dbfstest05 lib64]# ldconfig
[root@dbfstest05 lib64]# ldconfig -p | grep fuse
libfuse.so.2 (libc6,x86-64) => /lib64/libfuse.so.2
libfuse.so (libc6,x86-64) => /lib64/libfuse.so
3) dbfs_client による操作
ls コマンドの実行
[oracle@dbfstest05]$ dbfs_client scott@dbfstest05/dbfspdb
--command ls dbfs:/mnt1
Password:
dbfs:/mnt1/FS1
dbfs:/mnt1/FS1 ⇦ 作成されたストア(ファイルシステム)が確認できる
4) dbfs_client によるLinux OS上のマウント
<前提条件>
- OS上のマウントポイントは/mnt/dbfs/fs01とする
- DB上のDBFS表領域については/mnt/FS1というマウントストアが作成されている
[oracle@dbfstest05 ~]$ dbfs_client scott@dbfstest05/dbfspdb /mnt/dbfs/fs01
Password:
mount コマンドで確認
dbfs-scott@dbfstest05/dbfspdb:/ on /mnt/dbfs/fs01 type fuse (rw,nosuid,nodev,relatime,user_id=54321,group_id=54321,default_permissions,max_read=1048576)
[oracle@dbfstest05 FS1]$ cd /mnt/dbfs/fs01/mnt/FS1
[oracle@dbfstest05 FS1]$ pwd
/mnt/dbfs/fs01/mnt1/FS1
最後に
DBFS (Database File System) は OFS (Oracle File System) 同様にファイル・コンテンツの格納場所として有用です。DB内に格納されるため、MAAなどOracle のデータベースに対するアーキテクチャの恩恵が得られます。
また、GoldenGate の可用性・業務継続性を高めるためにも利用されています。
https://www.oracle.com/technetwork/jp/database/features/availability/maa-goldengate-rac-2007111-ja.pdf
この例ではClusterware へのリソース登録も含め GoldenGate プロセスの起動設定も施されており、OFSと比較してDatabaseと他のファイルシステムのコンテンツを利用した、より高度なサービス連携が実現されています。特にDBFSはData Guard と GoldenGate の併設環境において強みを持っています。