18.5 DBFSのメンテナンス
DBFS管理には、診断の実行、フェイルオーバーの管理、バックアップの実行などを行うためのツールが用意されています。
- DBFSクライアントでのOracle Walletの使用
この項では、Oracle Walletの使用について説明します。 - DBFS診断
dbfs_client
プログラムは、問題の診断に役立つように複数レベルのトレースをサポートしています。 - フェイルオーバー・イベント中のデータ損失の防止
dbfs_client
プログラムは、Oracle RACクラスタ内のデータベース・インスタンスのいずれかに障害が発生した場合、既存の他のデータベース・インスタンスのいずれかにフェイルオーバーできます。 - クライアント側の書込みキャッシュのバイパス
dbfs_client
の共有およびキャッシュ・セマンティクスは、close-to-openキャッシュ一貫性動作の使用におけるNFSと似ています。 - DBFSのバックアップ
DBFSのバックアップには2つの方法があります。 - DBFSの小さいファイルに対するパフォーマンス
共有ファイル・システムと同様に、小さいファイルに対するDBFSのパフォーマンスはローカル・ファイル・システムのパフォーマンスより遅れます。
親トピック: DBFSの使用
18.5.1 DBFSクライアントでのOracle Walletの使用
この項では、Oracle Walletの使用について学習します。
Oracle Walletを使用すると、ユーザーがパスワードを入力しなくても、DBFSクライアントでDBFSストアをマウントできます。
関連項目:
ウォレットの作成と管理の詳細は、Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイドを参照してくださいエンタープライズ・ユーザー・セキュリティ(EUS)はOracle Database 23cでは非推奨です。
親トピック: DBFSのメンテナンス
18.5.2 DBFSの診断
dbfs_client
プログラムは、問題の診断に役立つように複数レベルのトレースをサポートしています。
dbfs_client
は、Linuxでsyslog
デーモンを使用してトレースをファイルまたは/var/log/messages
に出力できます。
ノート:
diagnostic_dest
初期化パラメータは、自動診断リポジトリの場所を設定します。依存性サイクルが生成され、システムがハングアップする可能性があるため、dbfs_client
またはOracle File Server (OFS)をファイル・システム・サーバーとして使用する場合は、このパラメータがdbfs_client
またはOFS内のディレクトリを指していないことを確認してください。
ファイルに対してトレースする場合、dbfs_client
プログラムにより、ディスク上で2つのトレース・ファイルが保持されます。dbfs_client
は、トレース・ファイルを自動的にローテーションし、ディスク使用量を10MBに制限します。
デフォルトでは、/var/log/messages
に常にロギングされるクリティカルなメッセージを除き、トレーシングは無効になっています。
dbfs_client
でOracle Databaseに接続できない場合、trace_level
およびtrace_file
オプションを使用してトレースを有効にします。トレースを使用すると、追加メッセージがログ・ファイルに出力されて、デバッグが容易になります。
DBFSでは、Oracle Databaseを使用して、ファイルが格納されます。Oracleサーバーの問題は、dbfs_client
にエラーとして伝播される場合があります。dbfs_client
エラーが発生した場合、Oracleサーバー・ログを表示して、そのエラーが根本原因であるかを確認してください。
親トピック: DBFSのメンテナンス
18.5.3 フェイルオーバー・イベント中のデータ損失の防止
dbfs_client
プログラムは、Oracle RACクラスタ内のデータベース・インスタンスの1つに障害が発生した場合、既存の他のデータベース・インスタンスの1つにフェイルオーバーできます。
dbfs_client
フェイルオーバーが正常に動作するには、Oracleデータベース・サービスを変更して、フェイルオーバー・パラメータを指定する必要があります。サービスを変更するには、例18-2に示すように、DBMS_SERVICE.MODIFY_SERVICE
プロシージャを実行します例18-2 DBFSクライアント・フェイルオーバー・イベントの有効化
exec DBMS_SERVICE.MODIFY_SERVICE(service_name => 'service_name', aq_ha_notifications => true, failover_method => 'BASIC', failover_type => 'SELECT', failover_retries => 180, failover_delay => 1);
前提条件が満たされれば、バックエンドのOracle Databaseインスタンスに障害が発生した後におけるDBFS接続のフェイルオーバー中のデータ損失を防ぐことができます。この場合、クライアントが終了するとキャッシュされた書込みは失われる可能性があります。ただし、他のOracle RACインスタンスまたはスタンバイ・データベースに対するバックエンド・フェイルオーバーでは、書込みが失われることはありません。
-
-o failover
マウント・オプションを指定します。$ dbfs_client database_user@database_server -o failover /mnt/dbfs
親トピック: DBFSのメンテナンス
18.5.4 クライアント側の書込みキャッシュの迂回
dbfs_client
の共有およびキャッシュ・セマンティクスは、close-to-openキャッシュ一貫性動作を使用する点においてNFSと類似しています。
これにより、dbfs_client
の複数のコピーが同一の共有ファイル・システムにアクセスできるようになります。デフォルト・モードでは、クライアント上に書込みをキャッシュし、タイムアウト後またはユーザーがファイルを閉じた後で、その書込みをフラッシュします。また、ファイルへの書込みは、ライターがファイルをクローズした後にファイルをオープンするクライアントにのみ表示されます。
クライアント側の書込みキャッシュは迂回できます。
-
ファイルがオープンしているときに
O_SYNC
を指定します。キャッシュへの書込みをディスクに強制するには、
fsync
をコールします。
親トピック: DBFSのメンテナンス
18.5.5 DBFSのバックアップ
DBFSのバックアップには2つの方法があります。
ファイルシステムの基礎となる表をデータベース・レベルでバックアップするか、マウント・ポイントを介してOracle Secure Backupなどのファイルシステムのバックアップ・ユーティリティを使用できます。
内容は次のとおりです。
- データベース・レベルでのDBFSバックアップ
データベース・レベルで表をバックアップする利点は、ファイル・システム内のファイルがデータベース内のリレーショナル・データと常に一貫性があることです。 - ファイル・システム・ユーティリティを介したDBFSバックアップ
ファイル・システム・バックアップ・ユーティリティを使用してファイル・システムをバックアップする利点は、個々のファイルをバックアップから簡単にリストアできることです。
親トピック: DBFSのメンテナンス
18.5.5.1 データベース・レベルでのDBFSバックアップ
データベース・レベルで表をバックアップすると、ファイル・システム内のファイルとデータベース内のリレーショナル・データの一貫性を常に保つことができる利点があります。
また、データベースの完全なリストアおよびリカバリにより、データを損失せずにファイル・システムを完全にリストアおよびリカバリできます。データベースのpoint-in-timeリカバリの実行中に、ファイルは指定した時間にリカバリされます。通常のデータベース・バックアップのように、バックアップ中に発生した変更はリストアの一貫性に影響しません。リストアされたファイル・システム全体は、指定したタイム・スタンプにおいて常に一貫性があります。
親トピック: DBFSのバックアップ
18.5.5.2 ファイル・システム・ユーティリティを介したDBFSのバックアップ
ファイル・システム・バックアップ・ユーティリティを使用してファイル・システムをバックアップすると、個々のファイルをバックアップから容易にリストアできる利点があります。
リストアされたファイルに最後のバックアップ以降に加えられた変更は失われます。
Oracle Secure Backup管理サーバーを使用してバックアップがスケジュールされる場合、allow_root
マウント・オプションを指定します。
親トピック: DBFSのバックアップ
18.5.6 DBFSの小さいファイルのパフォーマンス
すべての共有ファイル・システムと同様に、小さいファイルに対するDBFSのパフォーマンスは、ローカル・ファイル・システムのパフォーマンスより遅れます。
DBFS内の各ファイルのデータまたはメタデータの操作は、FUSE
ユーザー・モード・ファイル・システムによって処理され、ネットワークを介してデータベースに転送される必要があります。このため、クライアントでキャッシュされていない操作は、DBFS内での実行に数ミリ秒かかります。
ディスクへの入力/出力(IO)を伴う操作では、ディスクIOの待機によって時間遅延のオーバーヘッドがマスクされます。大きいIOのオーバーヘッドは、小さいIOの場合よりも当然低いパーセンテージになります。ネットワーク・オーバーヘッドは、ディスクIOを発行しない操作でより顕著です。
ローカル・ファイル・システムを使用する数の少ない小さいファイル上で動作する操作では、オーバーヘッドは目立ちませんが、数千の小さいファイル上に影響を与える操作では、オーバーヘッドは大きくなります。たとえば、単一ディレクトリをリストする場合や単一ファイルを参照する場合、ほぼ即時にレスポンスが得られますが、数千のファイルを含むディレクトリ・ツリー内を検索する場合、オーバーヘッドは相対的に大きくなります。読取りおよび書込みのパフォーマンスを最適化するために、dbfs_client
のdirect_io
オプションをお薦めします。
親トピック: DBFSのメンテナンス