DBA_DIRECTORIES はOracleデータベース内すべてのディレクトリを示すデータ・ディクショナリ・ビューである。
列名 | データ型 | NULL | 説明 |
---|---|---|---|
OWNER | VARCHAR2(128) | NOT NULL | ディレクトリの所有者 |
DIRECTORY_NAME | VARCHAR2(128) | NOT NULL | ディレクトリの名前 |
DIRECTORY_PATH | VARCHAR2(4000) | ディレクトリのパス | |
ORIGIN_CON_ID | VARCHAR2(256) | データの発生元のコンテナのID |
SELECT ANY DICTIONARY システム権限を持つユーザーだけが DBA_DIRECTORIES データ・ディクショナリ・ビューを参照できる。
必要な権限が無いと、表またはビューが存在しないというエラーが発生する。
$ sqlplus tsuka/mellon@test_db
SQL*Plus: Release 19.0.0.0.0 Production on Tue Nov 14 22:12:47 2018
Version 19.1.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Last Successful login time: Fri Apr 15 2022 23:35:38 -07:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - 64bit Production
SQL> SELECT * FROM DBA_DIRECTORIES;
SELECT * FROM DBA_DIRECTORIES
*
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
Oracleデータ・ディクショナリ・ビュー DBA_DIRECTORIES の OWNER 列は、ディレクトリ・オブジェクトの所有者を示す。
ディレクトリの所有者を確認するSQL文の例を次に示す。
SQL> SELECT OWNER FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DATA_PUMP_DIR';
OWNER
-----
SYS
ディレクトリ・オブジェクトは所有者が常に SYS であるため、OWNER 列の値は常に「SYS」である。
Oracleデータ・ディクショナリ・ビュー DBA_DIRECTORIES の DIRECTORY_NAME 列は、ディレクトリオブジェクトの名前を示す。
ディレクトリの名前を確認するSQL文の例を次に示す。
SQL> SELECT OWNER, DIRECTORY_NAME, DIRECTORY_PATH FROM DBA_DIRECTORIES;
OWNER DIRECTORY_NAME DIRECTORY_PATH
----- -------------- ------------------------------
SYS DATA_PUMP_DIR D:\app\test\admin\orcl\dpdump\
SYS TEMP_DIR C:\temp\
Oracleデータ・ディクショナリ・ビュー DBA_DIRECTORIES の DIRECTORY_PATH 列は、ディレクトリのパスを示す。
ディレクトリのパスを確認するSQL文の例を次に示す。
SQL> SELECT DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DATA_PUMP_DIR';
DIRECTORY_PATH
------------------------------
D:\app\test\admin\orcl\dpdump\
Oracleデータ・ディクショナリ・ビュー DBA_DIRECTORIES の ORIGIN_CON_ID 列は、データの発生元のコンテナのIDを示す。
ディレクトリのコンテナIDを確認するSQL文の例を次に示す。
ディレクトリ・オブジェクトに関するデータ・ディクショナリ・ビューには、次のものがある。
ディレクトリ・オブジェクトは所有者が常に SYS であるため、USER_DIRECTORIES というデータディクショナリは存在しない。
ディレクトリ・オブジェクトに関するシステム権限には、次のものがある。
DBA_DIRECTORIESデータ・ディクショナリ・ビューを参照できる権限をユーザに追加するSQL文の例を次に示す。
SQL> GRANT SELECT ANY DICTIONARY TO tsukamoto;
ディレクトリ・オブジェクトに関するオブジェクト権限には、次のものがある。
ディレクトリの読取り権限と書込み権限をユーザに追加するSQL文の例を次に示す。
SQL> GRANT READ, WRITE ON DIRECTORY log_dir TO tsuka;
Oracleデータベースに ALTER DIRECTORY 文は存在しない。ディレクトリ・オブジェクトを変更したいときは、CREATE OR REPLACE DIRECTOY 文でディレクトリ・オブジェクトを置き換える。