この記事ではディレクトリオブジェクトの作成方法について解説します。
ディレクトリオブジェクトとは
ディレクトリオブジェクトとはファイルシステムのディレクトリパスを別名で示すためのオブジェクトです。
主にエクスポート/インポートの処理で使われることが多いです。
ディレクトリオブジェクトを使用すると、ディレクトリの実パスを直接指定する必要が無くなります。
また、実パスが変更になった場合でもディレクトリオブジェクトの定義を変更するだけでよいので便利です。
ディレクトリオブジェクトを使用すると、OSのファイルに対して、DBのユーザごとにアクセス制御をすることができます。
ディレクトリオブジェクトの作成方法
ディレクトリオブジェクトはCREATE DIRECTORY文を使用します。
CREATE [OR REPLACE] DIRECTORY <ディレクトリオブジェクト名> AS '<ディレクトリパス>';
「OR REPLACE」オプションを追加すると、同名のディレクトリオブジェクトが存在する場合でも上書きして作成されます。
ディレクトリパスはフルパスで指定します。
作成例
ディレクトリオブジェクト名「TEST」を「/tmp/test」ディレクトリに作成します。
SQL> CREATE OR REPLACE DIRECTORY TEST AS '/tmp/test';
ディレクトリが作成されました。
作成したディレクトリオブジェクトを確認します。
SQL> SELECT OWNER,DIRECTORY_NAME,DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'TEST'
OWNER DIRECTORY_NAME DIRECTORY_PATH
-------------------- ------------------------- --------------------------------------
SYS TEST /tmp/test
「test」ユーザにディレクトリオブジェクトに対する権限を付与します。
SQL> GRANT READ,WRITE ON DIRECTORY D_TEST TO test;
権限付与が成功しました。
これでユーザがディレクトリにアクセスできるようになります。