19 OFSの使用

OFSの実装には、ファイル・システムの作成、アクセスおよび管理が含まれます。

トピック:

19.1 OFSについて

Oracle File Server (OFS)は、PDB固有のスクリプト、ログ、トレース・ファイル、およびデータベース内でアプリケーションを実行することによって生成されるその他のファイルを格納する必要性に対処します。

さらに、次のタスクにOFSを使用できます。

  • データベース表にロードする前のソース・データをホストできるステージング領域として。
  • Oracle Data Pumpプロセスからのインポートまたはエクスポート・ファイルを格納する場合。

データ、REDO、アーカイブ・ログ・ファイル、データベース・トレース・ファイルなどのコア・データベース・ファイルをOFSに配置しないでください。これにより、依存性サイクルが発生し、システムがハングする可能性があります。同様に、自動診断リポジトリの場所を設定するdiagnostic_dest初期化パラメータは、OFS内のディレクトリを指さないようにしてください。

OFSには、PDBの一部である記憶域を使用してデータベース・ファイル・システムを作成する方法と手順が用意されています。作成したファイル・システムをマウントし、PL/SQLプロシージャを使用して他のUnixファイル・システムと同様にアンマウントし、使用されなくなったファイル・システムを破棄できます。PDBが破棄されると、ファイル・システムも破棄され、基礎となる記憶域が解放されます。

19.2 Oracle File Serverプロセスについて

OFSは、Oracle File Server Deamon (OFSD)と呼ばれる致命的でない専用のバックグラウンド・プロセスを使用して、データベース・ファイル・システムを管理します。

バックグラウンド・プロセスの詳細は、『データベース・リファレンス』ガイドの「バックグラウンド・プロセス」を参照してください。

インスタンスが起動すると、OFSがサポートされているLinuxなどのオペレーティング・システム・プラットフォームでOFSDプロセスが生成されます。OFSDはマルチスレッドであり、致命的ではありません。ファイル・システム管理リクエストと、マウントされた各ファイル・システムからのファイル・リクエストの両方を処理します。

OFSの集中管理されたサーバー・バックグラウンド・プロセス・モデルでは、制限された一連のサーバー・スレッドを使用して複数のファイル・システムをマウントおよびアクセスできます。必要に応じて新しいファイル・サーバー・スレッドを作成することで、リソース共有と線形スケーラビリティが向上します。これらのスレッドで使用されるメモリーおよびCPUは、RDBMSインスタンスで設定されたシステム全体のパラメータによって制御されます。

OFSDプロセスは、レシーバ・スレッドとワーカー・スレッドの2種類のスレッドを起動します。レシーバ・スレッドは、マウントされたファイル・システムからのリクエストを受信します。このスレッドの名前はof01と同様です。このスレッドによって受信されたリクエストは、別のワーカー・スレッドによって処理される送信キューに配置されます。送信キューは、受信リクエストをすべてのワーカー・スレッドに効率的に分散するためにハッシュ・パーティション化されています。デフォルトでは、OFSDは3つのワーカー・スレッドを起動します。OFS_THREADSパラメータの値を更新して、ワーカー・スレッドの数を増やすことができます。

OFSDプロセス

OFSDは、DBFSとOFSの2種類のファイル・システムをサポートしています。

DBMS_FS PL/SQLプロシージャを使用して、OFSDプロセスによって管理されるファイル・システムを作成、マウントおよび操作します。

OFSDは、ワーカー・スレッドのプールを使用して、インスタンスにマウントされた複数のファイル・システムからのリクエストを処理します。V$OFSMOUNTを使用して、マウントされたファイル・システムを問い合せます。返されるレスポンスは各PDBに固有です。指定されたPDBにマウントされているファイル・システムのみがリストされます。

19.3 OFS使用時の制限

OFSを使用する際には、次の制限事項があります。

  • ASMストレージでマウントされたDBFSは、正しくないマウント・サイズが示されます。

  • ローカル・ストレージでマウントされたOFSは、正しくないマウント・サイズが示されます。

19.4 OFS構成パラメータ

次の表は、OFSを使用してデータベース・オブジェクトのファイル・システム・アクセスを提供するようにチューニングできるパラメータを示しています。

表19-1 OFS構成パラメータ

パラメータ名 説明

OFS_THREADS

OFSリクエストを処理するOFSワーカー・スレッドの数を設定します。3から128の範囲で整数値を入力します。デフォルト値は4です。

このパラメータの値は、マウントされたファイル・システムの合計数と、各ファイル・システムでファイル操作が実行される速度に基づいて設定します。

この値は動的に増やすことしかできず、減らすことはできないため、慎重に検討した後で設定します。OFS_THREADSに高い値を設定すると、指定した数のスレッドが作成されます。ワークロードがない場合、これらのスレッドはアイドル状態のままになり、新しい作業を待機します。

ノート:

diagnostic_dest初期化パラメータは、自動診断リポジトリの場所を設定します。依存性サイクルが生成され、システムがハングアップする可能性があるため、dbfs_clientまたはOracle File Server (OFS)をファイル・システム・サーバーとして使用する場合は、このパラメータがdbfs_clientまたはOFS内のディレクトリを指していないことを確認してください。

19.5 FUSEを使用したDBFSのローカル管理

Filesystem in User Space (FUSE)を使用してDBFSを管理する方法を理解します。

LinuxカーネルのFUSEインタフェースによって、オペレーティング・システム・プロセスでファイル・システムが使用可能になります。ファイル・システムをマウントした後、ファイル・システムをエクスポートしてから、クライアント・アプリケーションがこのファイル・システムにアクセスできる他のノードにNFSマウントできます。

19.5.1 FUSEの構成

OFSDは、FUSEを介してデータベース・ファイル・システムを公開します。OFSDを使用してデータベース・ファイル・システムをマウントする前に、FUSEモジュールをインストールして構成する必要があります。

コンピュート・ノードでデータベース・インスタンスを実行している場合は、そのノードでFUSEモジュールを構成します。ファイル・システムはマウントされ、コンピュート・ノード上のマウントされたパスを介して表示されます。RAC構成では、OFSファイル・システムを各ノードに独立してマウントできるように、各ノードでFUSEを構成します。
データベース・インスタンスが実行されているクラウド環境またはオンプレミス環境でFUSEモジュールを構成するには、次のようにします。
  1. OracleユーザーがFUSE実行可能ファイルfusermountを使用するための読取りおよび実行権限を設定します。
    sudo chmod o+rx /usr/bin/fusermount
    fusermountファイルを使用して、FUSEユーザー・モードのファイル・システムをマウントおよびアンマウントします。
  2. Oracleユーザーがファイル・システムをマウントできるように、fusermountファイルにsetuidビットを設定します。
    sudo chmod u+s /usr/bin/fusermount
  3. マウントされたファイル・システムへのアクセスを他のユーザーに許可します。
    sudo sh -c ''echo user_allow_other >> /etc/fuse.conf''
  4. オプション。デフォルトでは、FUSEを使用してマウントできるファイル・システムの最大数は1000です。多数のPDBを実行し、PDBごとに個別のファイル・システムを構成する必要がある場合は、次のコマンドを実行して、FUSEを使用してマウントできるファイル・システムの数を増やします。次のコマンドは、FUSEを使用してマウントできるファイル・システムの数を4000に増やします。
    sudo sh -c ''echo mount_max=4000 >> /etc/fuse.conf''
  5. すべてのユーザーにfuse.confファイルの読取りを許可し、Oracleプロセスが実行時にこのファイルを読み取ることができるようにします。
    sudo chmod a+r /etc/fuse.conf

19.5.2 クラウドのOFSへのアクセス

任意のクラウド環境にマウントされたOFSからファイルにアクセスするには、環境を構成するための追加のステップを実行する必要があります。

クラウド環境のOFSマウント内のファイルにアクセスするには、追加の構成を実行する必要がある場合があります。セキュリティ上の理由により、OFSマウント・ポイントをデータベース・ノードからクライアント・ノードにエクスポートできない場合があります。これにより、クライアント・アプリケーションがオペレーティング・システムのコマンドおよびユーティリティを介してOFSファイルにアクセスできなくなり、OFSマウント・パスがシステム・コールを使用してアクセスできない場合があります。このような場合、Oracleでは、utl_fileパッケージを使用してOFSマウント内のファイルにアクセスすることをお薦めします。UTLファイル・パッケージの詳細は、PL/SQLパッケージおよびタイプ・リファレンスUTL_FILEサブプログラムのサマリーを参照してください。

impdpおよびexpdpコマンドライン・クライアントを使用して、OFSマウント内のファイルにアクセスすることもできます。ユーティリティ・ガイドOracle Data PumpインポートおよびOracle Data Pumpエクスポートを参照してください。

クラウドのクライアント・アプリケーションがOFSのファイルにアクセスできるように環境を構成するには、次のようにします。
  1. OFSマウント・パスを使用してディレクトリ・オブジェクトを作成します。

    次のサンプル・コードは、/u03/dbfs/<pdbid>/dataがdbノードのOFSマウント・ディレクトリである場合に、pdb1_ofsdirというディレクトリ・オブジェクトを作成する方法を示しています。

    CREATE DIRECTORY pdb1_ofsdir AS '/u03/dbfs/<pdbid>/data/';
  2. ディレクトリ・オブジェクトにアクセスするためのアクセス権をユーザーに付与します。

    ディレクトリ・オブジェクトの作成およびそのアクセス権の設定の詳細は、PL/SQLパッケージおよびタイプ・リファレンスCREATE DIRECTORYを参照してください。

DBFS表を直接問い合せまたは変更して、OFSファイルにアクセスしないでください。DBFSファイル・システムがOFSを介してマウントされている場合、またはメタデータとデータの不整合につながる可能性がある場合は、dbfs_clientを使用しないでください。OFSファイルにアクセスするには、DBMS_FSパッケージにリストされているプロシージャに加えて、UTL_FILEパッケージを使用します。

19.6 OFSクライアント・インタフェース

OFSインタフェースには、OFSの操作をサポートするビューと手順が含まれています。

トピック:

19.6.1 DBMS_FSパッケージ

DBMS_FSパッケージを使用して、ファイル・システムを管理します。このパッケージの手順を使用して、Oracle Databaseのファイル・システムを作成、マウント、アンマウントおよび破棄します。

PDBは、PL/SQLプロシージャを使用してこれらのジョブを発行でき、OFSDプロセスによってシリアルに実行されます。

関連項目:

Oracle OFSプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

次の例に、DBMS_FSパッケージの使用方法を示します。

BEGIN
 DBMS_FS.MAKE_ORACLE_FS (
  fstype           => 'dbfs',
  fsname           => 'dbfs_fs1',
  mount_options    => 'TABLESPACE=dbfs_fs1_tbspc');
END;
/
BEGIN
 DBMS_FS.MOUNT_ORACLE_FS (
  fstype           => 'dbfs',                              
  fsname           => 'dbfs_fs1',                              
  mount_point      => '/oracle/dbfs/testfs',                              
  mount_options    => 'default_permissions, allow_other'); 
END;
/
/************** Now you can access the file system. All the FS operations go here ***************/

BEGIN
 DBMS_FS.UNMOUNT_ORACLE_FS (
  fsname           => 'dbfs_fs1',                              
  mount_point      => '/oracle/dbfs/testfs',
  mount_options    => 'force'); 
END;
/
BEGIN
 DBMS_FS.DESTROY_ORACLE_FS (
  fstype           => 'dbfs',
  fsname           => 'dbfs_fs1');
END;
/

19.6.2 OFSのビュー

OFS操作をサポートするビューはV$OFSで始まります。

表19-2 OFSの固定ビュー

ビュー 説明
V$OFSMOUNT このビューを問い合せて、Oracle File Systemによってマウントされたファイル・システムの詳細を取得します。このビューの列およびデータ型の詳細は、Oracle DatabaseリファレンスV$OFSMOUNTを参照してください。
V$OFS_STATS このビューを問い合せて、マウント・ポイントの各ファイル操作がコールされた回数をリストします。このビューの列およびデータ型の詳細は、Oracle DatabaseリファレンスV$OFS_STATSを参照してください。