ヘッダーをスキップ
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

CREATE DIRECTORY

用途

CREATE DIRECTORY文を使用すると、ディレクトリ・オブジェクトを作成できます。ディレクトリ・オブジェクトは、外部バイナリ・ファイルLOB(BFILE)および外部表データが存在するサーバー・ファイル・システム上のディレクトリの別名を示します。PL/SQLコードおよびOCIコールでBFILEを参照する際、管理の汎用性のために、オペレーティング・システムのパス名をハード・エンコードせずにディレクトリ名を使用できます。

すべてのディレクトリは1つのネームスペースに作成されるため、個々のユーザーのスキーマで所有されるわけではありません。ディレクトリに対するオブジェクト権限を特定ユーザーに付与することによって、そのディレクトリ構造内に格納されているBFILEへのアクセスを制限できます。


関連項目:


前提条件

ディレクトリを作成するには、CREATE ANY DIRECTORYシステム権限が必要です。

ディレクトリを作成すると、そのディレクトリに対するREADWRITEおよびEXECUTEオブジェクト権限が自動的に付与され、他のユーザーおよびロールにこれらの権限を付与できます。DBAも、これらの権限を他のユーザーおよびロールに付与できます。

ディレクトリに対するWRITE権限は、外部表との接続に便利です。これによって、権限受領者は、外部表のエージェントがディレクトリに書き込めるのがログ・ファイルなのか不良ファイルなのかを判断できます。

ファイルの記憶域用に、それに応じたオペレーティング・システムのディレクトリ、Oracle Automatic Storage Management (Oracle ASM)ディスク・グループ、またはOracle ASMディスク・グループ内のディレクトリを作成する必要もあります。システム管理者およびデータベース管理者は、このオペレーティング・システムのディレクトリに、Oracle Databaseプロセスに対する読取り権限および書込み権限が正しく設定されていることを確認する必要があります。

ディレクトリに対して付与される権限は、オペレーティング・システムのディレクトリ用に定義されたアクセス権限とは無関係に作成されるため、これらの権限は完全に対応しない場合があります。たとえば、サンプル・ユーザーhrに、ディレクトリ・オブジェクトに対するREAD権限が付与されていても、それに対応するオペレーティング・システムのディレクトリにOracle Databaseプロセスに対するREAD権限が付与されていない場合は、エラーが発生します。

構文

create_directory::=

create_directory.gifの説明が続きます。
create_directory.gifの説明

セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存のディレクトリ・データベース・オブジェクトを再作成できます。この句を指定した場合、既存のディレクトリに付与されているデータベース・オブジェクト権限を削除、再作成および再付与しなくても、そのディレクトリの定義を変更できます。

再定義したディレクトリに対する権限が付与されていたユーザーは、権限が再付与されなくてもそのディレクトリにアクセスできます。


関連項目:

データベースからのディレクトリの削除については、「DROP DIRECTORY」を参照してください。

directory

作成するディレクトリ・オブジェクトの名前を指定します。directoryの最大長は30バイトです。ディレクトリ・オブジェクトは、スキーマ名で修飾できません。

指定したディレクトリが実際に存在するかどうかは検証されません。このため、オペレーティング・システムに存在するディレクトリを指定してください。また、オペレーティング・システムでパス名の大/小文字が区別される場合は、正しい形式でディレクトリ名を指定する必要があります。パス名の終わりにスラッシュを指定する必要はありません。

ディレクトリ名で親ディレクトリを参照しないでください。たとえば、次の構文は有効です。

CREATE DIRECTORY mydir AS '/scratch/data/file_data';

ただし、次の構文は無効です。

CREATE DIRECTORY mydir AS '/scratch/../file_data';

path_name

ファイルがあるサーバーのオペレーティング・システム・ディレクトリのフル・パス名を指定します。一重引用符が必要です。その結果、パス名の大/小文字が区別されます。

ディレクトリの作成例: 次の文は、サーバーのディレクトリを示す、ディレクトリのデータベース・オブジェクトを作成します。

CREATE DIRECTORY admin AS '/disk1/oracle/admin';

次の文は、オペレーティング・システムのディレクトリusr/bin/bfile_dirに格納されているBFILEにアクセスできるように、ディレクトリのデータベース・オブジェクトbfile_dirを再定義します。

CREATE OR REPLACE DIRECTORY bfile_dir AS '/usr/bin/bfile_dir';