14.5 BFILE管理
この項では、BFILE
を含むデータベースを管理するための様々な管理作業について説明します。
- DIRECTORYの使用上のガイドライン
DIRECTORY
オブジェクトを効率的に管理するためのガイドラインについて理解します。 - ディレクトリ・オブジェクトおよびBFILEの使用規則
次の条件が満たされる場合は、ディレクトリ・オブジェクトまたはBFILE
オブジェクトを作成できます。 - オープンできるBFILE数の上限の設定
各セッションで同時にオープンできるのは、制限された数のBFILE
のみです。この数の定義方法について、この項で学習します。
親トピック: LOBの管理: データベース管理
14.5.1 ディレクトリ・オブジェクト使用のガイドライン
DIRECTORY
オブジェクトの効率的な管理のガイドラインについて学習します。
ディレクトリ機能の主な目的は、サーバーのファイル・システム内の大きなファイルへのアクセスをDBAが管理するうえで、単純で柔軟性があり、既存アプリケーションの変更が不要で、安全性の高いメカニズムを使用可能にすることです。ただし、この目的を実現するには、DBAが
ディレクトリ・オブジェクトの使用時に次のガイドラインに従うことが非常に重要です。
-
ディレクトリ・オブジェクトは、データファイルの
ディレクトリにマップしないでください。
ディレクトリ・オブジェクトは、Oracleデータファイル、制御ファイル、ログ・ファイルおよび他のシステム・ファイルを含む物理ディレクトリにマップしないでください。これらのファイルを(不意にまたはなんらかの理由で)変更すると、データベースまたはサーバーのオペレーティング・システムが破損する場合があります。
-
DBAのみがシステム権限を持つ必要があります。
CREATE
ANY
DIRECTORY
やDROP ANY DIRECTORY
(DBAに最初に付与される)などのシステム権限は、他のユーザーにむやみに付与せず、慎重に扱う必要があります。多くの場合、データベース管理者のみが、これらの権限を持ちます。 -
DIRECTORY権限を付与するときには、十分な注意が必要です。
ディレクトリ・オブジェクトへの権限を他のユーザーに付与する場合は、注意が必要です。同様に、権限をユーザーに付与するときは、
WITH
GRANT
OPTION
句の使用にも注意が必要です。 -
データベースの運用中に、
ディレクトリ・オブジェクトを削除または置換しないでください。ディレクトリ・オブジェクトを削除または置換した場合、この
ディレクトリ・オブジェクトに対応付けられているすべてのファイルのすべてのセッションからの操作が正常に実行されなくなります。さらに、これらのファイルを正常にクローズする前に
DROP
コマンドまたはREPLACE
コマンドを実行した場合は、プログラムにおけるこれらのファイルへの参照が失われ、これらのファイルに対応付けられているシステム・リソースも、セッションを停止するまで解放されなくなります。この場合、PL/SQLユーザーに可能な手段は、たとえば
DBMS_LOB
.FILECLOSEALL
をコールするプログラム・ブロックを実行してファイル操作を再開するか、または各セッションをすべて終了するかのいずれかです。したがって、これらのコマンドは慎重に使用し、できればメンテナンスの停止時間中に使用します。 -
ユーザーの
DIRECTORY
オブジェクト権限を取り消すときには、十分な注意が必要です。REVOKE
文を使用してユーザーのDIRECTORY
オブジェクト権限を取り消した場合、ユーザーのセッションに依存するファイルへの、その後の操作が正常に実行されません。ユーザーは、権限を再取得してファイルをクローズするか、セッションでFILECLOSEALL
を実行してファイル操作を再開する必要があります。
一般的に、ファイル・アクセスの管理にディレクトリ・オブジェクトを使用することは、OSレベルでのシステム管理作業の延長です。ファイルは、計画を立てることによって、Oracleプロセス用のREAD権限を持つ適切なディレクトリに論理的に構成できます。
これらの物理ファイルにマップするREAD
権限とともにディレクトリ・オブジェクトを作成し、特定のデータベース・ユーザーにこれらのディレクトリへのアクセス権限を付与できます。
関連項目:
ディレクトリ・オブジェクトのセキュリティ親トピック: BFILE管理
14.5.2 ディレクトリ・オブジェクトおよびBFILEの使用規則
次の条件が満たされている場合、ディレクトリ・オブジェクトまたはBFILE
オブジェクトを作成できます。
ディレクトリ・オブジェクトまたはBFILE
オブジェクトを作成する場合、次の条件が満たされている必要があります。
-
オペレーティング・システム・ファイルが、シンボリック・リンクまたはハード・リンクではないこと。
-
Oracleディレクトリ・オブジェクトに指定されているオペレーティング・システム・ディレクトリ・パスが、既存のオペレーティング・システム・ディレクトリ・パスであること。
-
Oracleディレクトリ・オブジェクトに指定されているオペレーティング・システム・ディレクトリ・パスのコンポーネントに、シンボリック・リンクが含まれていないこと。
親トピック: BFILE管理
14.5.3 オープンできるBFILE数の上限の設定
1回のセッションで同時にオープンが可能なBFILE
の数には制限があります。この数の定義方法について、この項で学習します。
初期化パラメータSESSION_MAX_OPEN_FILES
は、1回のセッションで同時にオープンできるファイル数の上限を定義します。
デフォルト値は10です。このデフォルト値を使用して、1回のセッションにつき10個までのファイルを同時にオープンできます。この制限を変更するには、データベース管理者がinit.ora
ファイルのパラメータ値を変更する必要があります。たとえば:
SESSION_MAX_OPEN_FILES=20
クローズされていないファイル数がSESSION_MAX_OPEN_FILES
値を超えると、そのセッションでは、それ以上のファイルをオープンできなくなります。すべてのオープンしているファイルをクローズするには、DBMS_LOB.FILECLOSEALL
コールを使用します。
関連項目:
DIRECTORYオブジェクト親トピック: BFILE管理