LoginSignup
1
1

Oracle Database File System (DBFS)構築について

Posted at

はじめに

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リンクなどの選択肢があります。
dbfs_01.png
参考にしたサイト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;

dbfs_02.png

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_03.png

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 の併設環境において強みを持っています。

1
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
1
1