CREATE DIRECTORY

CREATE DIRECTORYはディレクトリ・オブジェクトを作成するSQL文である。

Oracleデータベース内にどのようなディレクトリ・オブジェクトが存在するかは、DBA_DIRECTORIES データディクショナリを問い合わせることで分かる。

CREATE DIRECTORYの構文

ディレクトリ・オブジェクトを作成する。

CREATE [OR REPLACE] DIRECTORY directory AS 'path'
OR REPLACE
既存のディレクトリ・オブジェクトのパスを置き換える。
SQL> CREATE OR REPLACE DIRECTORY data_pump_dir AS '/home/datapump';
directory
作成するディレクトリ・オブジェクトの名前を指定する。

ディレクトリ・オブジェクトは非スキーマ・オブジェクトであるため、スキーマ名は指定できない。

path
ディレクトリのフルパス名を指定する。Linuxでは、パス名の大文字と小文字が区別される。
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 文で削除してから、再作成する。

関連記事

DROP DIRECTORY
ディレクトリ・オブジェクトを削除するSQL文
ALL_DIRECTORIES
現在のユーザがアクセスできるディレクトリ・オブジェクトを示すデータ・ディクショナリ・ビュー
DBA_DIRECTORIES
すべてのディレクトリ・オブジェクトを示すデータ・ディクショナリ・ビュー