用途
CREATE
DIRECTORY
文を使用すると、ディレクトリ・オブジェクトを作成できます。ディレクトリ・オブジェクトは、外部バイナリ・ファイルLOB(BFILE
)および外部表データが存在するサーバー・ファイル・システム上のディレクトリの別名を示します。PL/SQLコードおよびOCIコールでBFILE
を参照する際、管理の汎用性のために、オペレーティング・システムのパス名をハード・エンコードせずにディレクトリ名を使用できます。
すべてのディレクトリは1つのネームスペースに作成され、個別のスキーマでは所有されません。ディレクトリに対するオブジェクト権限を特定ユーザーに付与することによって、そのディレクトリ構造内に格納されているBFILE
へのアクセスを制限できます。
関連項目:
|
前提条件
ディレクトリを作成するには、CREATE
ANY
DIRECTORY
システム権限が必要です。
ディレクトリを作成すると、そのディレクトリに対するREAD
、WRITE
およびEXECUTE
オブジェクト権限が自動的に付与され、他のユーザーおよびロールにこれらの権限を付与できます。DBAも、これらの権限を他のユーザーおよびロールに付与できます。
ディレクトリに対するWRITE
権限は、外部表との接続に便利です。これによって、権限受領者は、外部表のエージェントがディレクトリに書き込めるのがログ・ファイルなのか不良ファイルなのかを判断できます。
ファイルの記憶域用に、それに応じたオペレーティング・システムのディレクトリ、Oracle Automatic Storage Management (Oracle ASM)ディスク・グループ、またはOracle ASMディスク・グループ内のディレクトリを作成する必要もあります。システム管理者およびデータベース管理者は、このオペレーティング・システムのディレクトリに、Oracle Databaseプロセスに対する読取り権限および書込み権限が正しく設定されていることを確認する必要があります。
ディレクトリに対して付与される権限は、オペレーティング・システムのディレクトリ用に定義されたアクセス権限とは無関係に作成されるため、これらの権限は完全に対応しない場合があります。たとえば、サンプル・ユーザーhr
に、ディレクトリ・オブジェクトに対するREAD
権限が付与されていても、それに対応するオペレーティング・システムのディレクトリにOracle Databaseプロセスに対するREAD
権限が付与されていない場合は、エラーが発生します。
セマンティクス
OR
REPLACE
を指定すると、既存のディレクトリ・データベース・オブジェクトを再作成できます。この句を指定した場合、既存のディレクトリに付与されているデータベース・オブジェクト権限を削除、再作成および再付与しなくても、そのディレクトリの定義を変更できます。
再定義したディレクトリに対する権限が付与されていたユーザーは、権限が再付与されなくてもそのディレクトリにアクセスできます。
directory
作成するディレクトリ・オブジェクトの名前を指定します。directory
の最大長は30バイトです。ディレクトリ・オブジェクトは、スキーマ名で修飾できません。
指定したディレクトリが実際に存在するかどうかは検証されません。このため、オペレーティング・システムに存在するディレクトリを指定してください。また、オペレーティング・システムでパス名の大/小文字が区別される場合は、正しい形式でディレクトリ名を指定する必要があります。パス名の終わりにスラッシュを指定する必要はありません。
ディレクトリ名で親ディレクトリを参照しないでください。たとえば、次の構文は有効です。
CREATE DIRECTORY mydir AS '/scratch/data/file_data';
ただし、次の構文は無効です。
CREATE DIRECTORY mydir AS '/scratch/../file_data';
path_name
ファイルがあるサーバーのオペレーティング・システム・ディレクトリのフル・パス名を指定します。一重引用符が必要です。その結果、パス名の大/小文字が区別されます。