24 OFSを使用したDBFSアクセス
Oracle File Server (OFS)プロセスを使用してデータベース・ファイル・システム(DBFS)にアクセスできます。
この章では、OFSが専用バックグラウンド・プロセスであるOFSDを使用してDBFSを管理する方法について詳しく説明します。また、DBFSへのアクセスおよび管理方法に関する詳細も示します。
Oracle Clientインストールがない複数のノードで新規に作成されたDBFSにアクセスするには、OFSを使用してファイル・システムをNFSマウントします。Oracle Clientがインストールされていない場合は、OFSを使用して、新しく作成されたDBFSをNFSにマウントし、複数のノードで使用します。すべてのファイル・システム・リクエストはOFSバックグラウンド・プロセスのスレッドによって処理されます。
- OFSについて
Oracle File Server (OFS)は、PDB固有のスクリプト、ログ、トレース・ファイル、およびデータベース内でアプリケーションを実行することによって生成されるその他のファイルを格納する必要性に対処します。 - Oracle File Serverプロセスについて
OFSは、Oracle File Server Deamon (OFSD)と呼ばれる致命的でない専用のバックグラウンド・プロセスを使用して、データベース・ファイル・システムを管理します。 - OFS構成パラメータ
次の表は、OFSを使用するデータベース・オブジェクトのファイル・システム・アクセスを提供するようにチューニングできるパラメータを示しています。 - OFSクライアント・インタフェース
OFSインタフェースには、OFSの操作をサポートするビューと手順が含まれています。 - FUSEを使用したDBFSのローカル管理
ユーザー・スペース(FUSE)でファイルシステムを使用してDBFSを管理する方法を理解します。 - NFSアカウントによるDBFSとOFSへのアクセス
NFSは、ネットワーク上のローカル・ファイル・システムにアクセスするために広く使用されているプロトコルです。OFSはこのプロトコルを使用し、コンピュート・ノードにマウントされているDBFSファイル・システムへのアクセスを可能にします。
24.1 OFSについて
Oracle File Server (OFS)は、PDB固有のスクリプト、ログ、トレース・ファイル、およびデータベース内でアプリケーションを実行することによって生成されるその他のファイルを格納する必要性に対処します。
さらに、次のタスクにOFSを使用できます。
- データベース表にロードする前のソース・データをホストできるステージング領域として。
- Oracle Data Pumpプロセスからのインポートまたはエクスポート・ファイルを格納する場合。
データ、REDO、アーカイブ・ログ・ファイル、データベース・トレース・ファイルなどのコア・データベース・ファイルをOFSに配置しないでください。これにより、依存性サイクルが発生し、システムがハングする可能性があります。同様に、自動診断リポジトリの場所を設定するdiagnostic_dest
初期化パラメータは、OFS内のディレクトリを指さないようにしてください。
OFSには、PDBの一部である記憶域を使用してデータベース・ファイル・システムを作成する方法と手順が用意されています。作成したファイル・システムをマウントし、PL/SQLプロシージャを使用して他のUnixファイル・システムと同様にアンマウントし、使用されなくなったファイル・システムを破棄できます。PDBが破棄されると、ファイル・システムも破棄され、基礎となる記憶域が解放されます。
親トピック: OFSを使用したDBFSアクセス
24.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は、DBFSとOFSの2種類のファイル・システムをサポートしています。
DBMS_FS
PL/SQLプロシージャを使用して、OFSDプロセスによって管理されるファイル・システムを作成、マウントおよび操作します。
OFSDは、ワーカー・スレッドのプールを使用して、インスタンスにマウントされた複数のファイル・システムからのリクエストを処理します。V$OFSMOUNT
を使用して、マウントされたファイル・システムを問い合せます。返されるレスポンスは各PDBに固有です。指定されたPDBにマウントされているファイル・システムのみがリストされます。
親トピック: OFSを使用したDBFSアクセス
24.3 OFS構成パラメータ
次の表は、OFSを使用してデータベース・オブジェクトのファイル・システム・アクセスを提供するようにチューニングできるパラメータを示しています。
表24-1 OFS構成パラメータ
パラメータ名 | 説明 |
---|---|
|
OFSリクエストを処理するOFSワーカー・スレッドの数を設定します。3から128の範囲で整数値を入力します。 このパラメータの値は、マウントされたファイル・システムの合計数と、各ファイル・システムでファイル操作が実行される速度に基づいて設定します。
この値は動的に増やすことしかできず、減らすことはできないため、慎重に検討した後で設定します。値を変更する前に、
|
ノート:
diagnostic_dest
初期化パラメータは、自動診断リポジトリの場所を設定します。依存性サイクルが生成され、システムがハングアップする可能性があるため、dbfs_client
またはOracle File Server (OFS)をファイル・システム・サーバーとして使用する場合は、このパラメータがdbfs_client
またはOFS内のディレクトリを指していないことを確認してください。
24.4 OFSクライアント・インタフェース
OFSインタフェースには、OFSの操作をサポートするビューと手順が含まれています。
OFSで提供されるPL/SQLプロシージャを使用して、ファイル・システムを作成、マウント、アンマウントおよび破棄します。ビューを問い合せて、マウントされたファイル・システムの状態を識別し、個々のファイルI/O操作のパフォーマンス・データを収集できます。
- DBMS_FSパッケージ
DBMS_FS
パッケージを使用して、ファイル・システムを管理します。このパッケージの手順を使用して、Oracle Databaseのファイル・システムを作成、マウント、アンマウントおよび破棄します。 - OFSのビュー
OFS操作をサポートするビューは、V$OFS
で始まります。
親トピック: OFSを使用したDBFSアクセス
24.4.1 DBMS_FSパッケージ
DBMS_FS
パッケージを使用して、ファイル・システムを管理します。このパッケージの手順を使用して、Oracle Databaseのファイル・システムを作成、マウント、アンマウントおよび破棄します。
複数のPDBがこれらのジョブをパラレルに発行できます。リクエストは、異なるワーカー・スレッドによってパラレルに実行されます。V$OFS_THREADS
を問い合せることにより、操作のステータスを取得できます。OFSDがスレッドを管理します。現在のワーカー・スレッドの数がOFS_THREADS
パラメータの値より少ない場合、新しいワーカー・スレッドが作成されます。
関連項目:
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',
unmount_options => 'force');
END;
/
BEGIN
DBMS_FS.DESTROY_ORACLE_FS (
fstype => 'dbfs',
fsname => 'dbfs_fs1');
END;
/
親トピック: OFSクライアント・インタフェース
24.4.2 OFSのビュー
OFS操作をサポートするビューはV$OFS
で始まります。
表24-2 OFSの固定ビュー
ビュー | 説明 |
---|---|
V$OFS_THREADS |
このビューを問い合せて、実行中のすべてのOFSスレッドをリストし、スレッド・タイプ、スレッドが動作しているファイル・システム、特定の操作でワーカー・スレッドによって費やされた時間など、様々なOFSスレッドに関する詳細を取得します。このビューの列およびデータ型の詳細は、Oracle DatabaseリファレンスのV$OFS_THREADSを参照してください。 |
V$OFSMOUNT |
このビューを問い合せて、Oracle File Systemによってマウントされたファイル・システムの詳細を取得します。このビューの列およびデータ型の詳細は、Oracle DatabaseリファレンスのV$OFSMOUNTを参照してください。 |
V$OFS_STATS |
このビューを問い合せて、マウント・ポイントの各ファイル操作がコールされた回数をリストします。このビューの列およびデータ型の詳細は、Oracle DatabaseリファレンスのV$OFS_STATSを参照してください。 |
親トピック: OFSクライアント・インタフェース
24.5 FUSEを使用したDBFSのローカル管理
Filesystem in User Space (FUSE)を使用してDBFSを管理する方法を理解します。
LinuxカーネルのFUSEインタフェースによって、オペレーティング・システム・プロセスでファイル・システムが使用可能になります。ファイル・システムをマウントした後、ファイル・システムをエクスポートしてから、クライアント・アプリケーションがこのファイル・システムにアクセスできる他のノードにNFSマウントできます。
- FUSEの構成
OFSDは、FUSEを介してデータベース・ファイル・システムを公開します。OFSDを使用してデータベース・ファイル・システムをマウントする前に、FUSEモジュールをインストールして構成する必要があります。 - クラウドでのOFSへのアクセス
クラウド環境にマウントされているOFSからファイルにアクセスするには、環境を構成するための追加のステップを実行する必要があります。
親トピック: OFSを使用したDBFSアクセス
24.5.1 FUSEの構成
OFSDは、FUSEを介してデータベース・ファイル・システムを公開します。OFSDを使用してデータベース・ファイル・システムをマウントする前に、FUSEモジュールをインストールして構成する必要があります。
親トピック: FUSEを使用したDBFSのローカル管理
24.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エクスポートを参照してください。
DBFS表を直接問い合せまたは変更して、OFSファイルにアクセスしないでください。DBFSファイル・システムがOFSを介してマウントされている場合、またはメタデータとデータの不整合につながる可能性がある場合は、dbfs_client
を使用しないでください。OFSファイルにアクセスするには、DBMS_FS
パッケージにリストされているプロシージャに加えて、UTL_FILE
パッケージを使用します。PL/SQLパッケージおよびタイプ・リファレンスのFS_EXISTSおよびLIST_FILESを参照してください。
親トピック: FUSEを使用したDBFSのローカル管理
24.6 NFSアカウントによるDBFSおよびOFSへのアクセス
NFSは、ネットワーク上の任意のローカル・ファイル・システムにアクセスするために広く使用されているプロトコルです。OFSはこのプロトコルを使用し、コンピュート・ノードにマウントされているDBFSファイル・システムへのアクセスを可能にします。
NFSを使用すると、ファイル・システムへのアクセスが認可されているすべてのノードからコンピュート・ノードにアクセスできます。
24.6.1 NFSアカウントによるOFSへのアクセス
OFSマウントは、指定したノードのリストにエクスポートし、それらにNFSマウントできます。これにより、ユーザーは、データベースが実行されていないノードからOFSマウント・ポイントのコンテンツにアクセスできます。NFSエクスポートは、セキュリティ上の理由からクラウド環境では機能しない場合がありますが、オンプレミス環境で使用できます。
NFS v3はステートレス・プロトコルであり、opendir
コールとreleasedir
コールの間に各readdir
リクエストをカプセル化します。これによって、多数のファイルがあるディレクトリをリストする場合、パフォーマンスが低下する可能性があります。したがって、OFSはopendir
コールとreleasedir
コールの間で持続するディレクトリ・キャッシュを維持します。no_rbt_cache
マウント・オプションは、ディレクトリ・キャッシュ・リストの不整合を回避したり、ディレクトリ・キャッシュの利点を利用するために使用しないでください。
親トピック: NFSアカウントによるDBFSとOFSへのアクセス
24.6.2 NFSサーバーによるストレージへのアクセスの前提条件
NFSサーバーによるストレージへのアクセスの前提条件について学習します。
前提条件は次のとおりです。
-
OFSを使用する前にDBFSファイル・システムを作成する必要があります。
-
データベースでエクスポートされるファイル・システムをマウントできる必要があります。
-
NFSサーバーを
KERNEL
モジュールで設定する必要があります。ノート:
KERNEL
モジュールはLinux用FUSE
ドライバでサポートされます。
親トピック: NFSアカウントによるDBFSとOFSへのアクセス
24.6.3 NFSセキュリティ
OFSでは、OS認証モデルを使用してNFSクライアント・ユーザーを認可します。ユーザーがローカル・ノード(Oracleインスタンスが実行されている)にアクセスしている場合、ファイル・システム内の各ファイルへのアクセスは各オブジェクトに設定されているUNIXアクセス制御リストで制御されます。NFSクライアントの場合、アクセスを制御するようにKerberosを構成できます。
Linuxでは、OFSはFUSEを使用してOSカーネルまたはNFSクライアントからファイル・システム要求を取得します。このためには、root
ユーザー以外のOSユーザーとOracleユーザーがファイル・システムにアクセスする必要がある場合に、/etc/fuse.conf
設定ファイルにuser_allow_other
パラメータを設定する必要があります。
ノート:
ユーザーがOracleパスワードを使用してSQL*Plus
などのOracleクライアント・ツールにログインしてSQL文を実行できるように設定することもできます。
ネットワークが安全でない場合、Kerberosを設定してOS NFSを使用してユーザーを認証することをお薦めします。
ノート:
-
Kerberos認証はNFSバージョン4以降で使用できます。OFSがNFSバージョン3経由でエクスポートされた場合、認証は
AUTH_SYS
を使用して実行されます。 -
ローカル・ノードでは、OFSのエクスポート方法(NFSバージョン3またはNFSバージョン4)に関係なく、
AUTH_SYS
を使用して認証が実行されます。
- Kerberosについて
Kerberosは暗号化テクノロジKey Distribution Center(KDC)を使用し、オープン・ネットワークでセキュアな認証を実行する仲裁者の役割を果たします。 - Kerberosサーバーの構成
LinuxシステムでKerberosサーバーを構成するには:
親トピック: NFSアカウントによるDBFSとOFSへのアクセス
24.6.3.1 Kerberosについて
Kerberosは暗号化テクノロジKey Distribution Center (KDC)を使用し、オープン・ネットワークでセキュアな認証を実行する仲裁者の役割を果たします。
Kerberosは、3種類のセキュリティをすべて提供する広く普及しているセキュリティ・メカニズムです。
-
認証
-
整合性チェック
-
プライバシ
Kerberosインフラストラクチャは、Kerberosソフトウェア、セキュアな認証サーバー、集中管理されたアカウントおよびパスワード・ストア、Kerberosプロトコルによる認証が設定されたシステムで構成されています。OS NFSサーバーは、Kerberosプリンシパル名をユーザー名として使用して完全な認証と整合性チェックを処理します。認証が実行されると、Oracleカーネルに渡される要求はVFS I/O要求を通じて渡されるユーザー名に基づいて処理されます。
親トピック: NFSセキュリティ
24.6.3.2 Kerberosサーバーの構成
LinuxシステムでKerberosサーバーを構成するには:
-
LinuxシステムにKerberosソフトウェアをインストールします。
-
次のコマンドを使用して、デーモンが実行されているかどうかを確認します。
# /sbin/chkconfig krb5kdc on # /sbin/chkconfig kadmin on
-
デーモンが実行されていない場合は、次のコマンドを使用してデーモンを手動で起動します。
# /etc/rc.d/init.d/krb5kdc start # /etc/rc.d/init.d/kadmin start
-
kadmin.local
コマンドを使用して、ユーザー・プリンシパルを追加します。例:kadmin.local: addprinc <scott>
親トピック: NFSセキュリティ