はじめに
Oracle Database には 表領域を利用してファイルシステムを構成し、OS上にマウントして使用する Oracle File System (OFS)があります。Database をファイル・ストアとして使用するケースとして代表的なものがDBFSですが、Oracle Clientがインストールされていないノードからアクセスする必要がある場合、OFSを使用してファイル・システムをNFSマウントする事が可能です。
https://docs.oracle.com/cd/F39414_01/adlob/dbfs_access_using_ofs.html#GUID-034FC394-AE15-4D16-8AA0-45CC0A70CACC
DBMS_FSパッケージの概要
DBMS_FS パッケージは Database File System (DBFS)を利用したファイルシステムの作成・マウント・アンマウントや破棄など基本的な操作を行う事ができるプロシージャで構成されています。19c以降では、PDBでも利用可能でPDBごとに最大5までのファイルシステムがサポートされます。
参考にしたサイトURL
https://docs.oracle.com/cd/F19136_01/arpls/DBMS_FS.html#GUID-F42D42FE-B1B6-4A5F-8DC3-BBDA98CC09F9
OFS 環境構築手順
1) FUSEのインストール
[root@ofstest05 ~]# yum install fuse
OSの再起動
2) 表領域の作成
CREATE TABLESPACE "OFS" DATAFILE SIZE 209715200
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
3) DBMS_FS によるファイルシステム作成とマウント
SQL> exec dbms_fs.make_oracle_fs(fstype=>'ofs',fsname=>'ofs_fs',fsoptions=>'TABLESPACE=OFS')
PL/SQLプロシージャが正常に完了しました。
SQL> exec dbms_fs.mount_oracle_fs(fstype=>'ofs',fsname=>'ofs_fs',mount_point=>'/ofs/data',mount_options=>'default_permissions, allow_other, persist');
PL/SQLプロシージャが正常に完了しました。
dfによる確認で、/ofs/data がOS上のマウント位置で確認できる
[root@ofstest05 ~]# df -hT
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 32G 0 32G 0% /dev
tmpfs tmpfs 32G 0 32G 0% /dev/shm
tmpfs tmpfs 32G 11M 32G 1% /run
tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/mapper/ol_ofstest05-root xfs 1000G 72G 929G 8% /
/dev/sda1 xfs 1014M 228M 787M 23% /boot
/dev/mapper/ol_ofstest05-home xfs 84G 8.2G 76G 10% /home
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/54321
tmpfs tmpfs 6.3G 12K 6.3G 1% /run/user/42
/dev/fuse fuse 32G 0 32G 0% /ofs/data
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0
[参考] OFSについての情報の収集は以下で可能
select * from v$ofs_stats;
select * from V$OFSMOUNT;
最後に
現状のOracle Database は Multitenant Architectureを全面に出し、Converge Database として様々なデータタイプ、ワークロードを一元管理する方向での実装も進めています。コンテンツとトランザクション、あるいは他のサービスとの連携において一貫性を保持したい場合はDBFSの方が良いのかも知れませんが、OFSは手順も簡素でリレーショナルのデータとファイルシステム上のコンテンツが緩い一貫性のもとで保ちやすいものであると言えると思います。