CREATE DIRECTORYはディレクトリ・オブジェクトを作成するSQL文である。
Oracleデータベース内にどのようなディレクトリ・オブジェクトが存在するかは、DBA_DIRECTORIES データディクショナリを問い合わせることで分かる。
ディレクトリ・オブジェクトを作成する。
CREATE [OR REPLACE] DIRECTORY directory AS 'path'
SQL> CREATE OR REPLACE DIRECTORY data_pump_dir AS '/home/datapump';
ディレクトリ・オブジェクトは非スキーマ・オブジェクトであるため、スキーマ名は指定できない。
SQL> CREATE DIRECTORY data_pump_dir AS '/home/tsuka/datapump';
ディレクトリ・オブジェクトを作成するには、CREATE ANY DIRECTORY システム権限が必要である。
ディレクトリ内のファイルを読み取るためには、READ オブジェクト権限が必要である。
ディレクトリ内のファイルに書き込むためには、WRITE オブジェクト権限が必要である。
権限が不足した状態でディレクトリ・オブジェクトを作成しようとすると、「権限が不足しています」エラーが発生する。
SQL> CREATE DIRECTORY data_pump_dir AS '/home/tsuka/datapump';
行1でエラーが発生しました。
ORA-01031: 権限が不足しています
ディレクトリ・オブジェクトのパスを変更するには、CREATE OR REPLACE DIRECTORY 文を使う。なお、ALTER DIRECTORY という SQL 文は存在しない。
ディレクトリ・オブジェクトの名前を変更することはできない。ディレクトリ・オブジェクトの名前を変更したい場合は、ディレクトリ・オブジェクトを DROP DIRECTORY 文で削除してから、再作成する。