Database OracleDB インフラ

[Oracle] ディレクトリオブジェクトの作成・権限付与・確認・削除

こんにちは!シミダイ(@shimidai2100)です。

今回はOracle Databaseの「ディレクトリオブジェクト」の「作成」・「権限付与」・「確認」・「削除」のSQLを紹介したと思います。

この記事にはディレクトリオブジェクトに必要な全てのことを記載しますので、必ずマスターするようにしましょう。


ディレクトリオブジェクトの作成:create or replace directory

ディレクトリオブジェクトの作成は「create or replace directory」で行います。

create or replace directory [ディレクトリオブジェクト] AS [ディレクトリオブジェクトのパス];

以下が実行例です。

16:24:14 SYS@orcl18c > create or replace directory DUMPDIR AS '/u01/app/oracle/admin/orcl18c/dpdump/';

ディレクトリが作成されました。

経過: 00:00:00.06

ディレクトリオブジェクトへ読み書き権限の付与:grant read write on directory ~

ディレクトリオブジェクトは作成しても読み書き権限がないと利用ことが出来ません。

grant文」で「read」および「write」の権限を付与しましょう。

grant read, write on directory <ディレクトリオブジェクト> to <ユーザーorロール>

以下が実行例です。

17:21:31 SYS@orcl18c > grant read, write on directory DUMPDIR to test001;

権限付与が成功しました。

経過: 00:00:00.08

ディレクトリオブジェクトの確認:dba_directories

ディレクトリオブジェクトの確認は「dba_directories」ビューで確認します。

以下のselect文で確認できます。

select directory_name,
       directory_path
  from dba_directories 
  where directory_name = <ディレクトリオブジェクト名>;

下が実行例です。

17:37:25 SYS@orcl18c > set line 1000
17:38:56 SYS@orcl18c > col directory_name for a20
17:38:56 SYS@orcl18c > col directory_path for a80
17:38:56 SYS@orcl18c > select directory_name,
17:38:56   2         directory_path
17:38:56   3    from dba_directories
17:38:56   4    where directory_name = 'DUMPDIR';

DIRECTORY_NAME       DIRECTORY_PATH
-------------------- --------------------------------------------------------------------------------
DUMPDIR              /u01/app/oracle/admin/orcl18c/dpdump/

ディレクトリオブジェクトの権限付与確認:dba_tab_privs

ユーザーにディレクトリオブジェクトの読み書き権限が付与されているか確認するのは「dba_tab_privs」を利用します。

以下のselect文で確認することができます。

set line 1000
col table_name for a20
col PRIVILEGE for a20
select TABLE_NAME, 
       PRIVILEGE
  from dba_tab_privs 
 where GRANTEE = <ユーザーorロール名>;

以下が実行例です。

17:46:59 SYS@orcl18c > set line 1000
17:47:00 SYS@orcl18c > col table_name for a20
17:47:00 SYS@orcl18c > col PRIVILEGE for a20
17:47:00 SYS@orcl18c > select TABLE_NAME,
17:47:00   2         PRIVILEGE
17:47:00   3    from dba_tab_privs
17:47:00   4   where GRANTEE = 'TEST001';

TABLE_NAME           PRIVILEGE
-------------------- --------------------
DUMPDIR              READ
DUMPDIR              WRITE

経過: 00:00:00.00

ディレクトリオブジェクトの削除:drop directory

ディレクトリオブジェクトを削除するのは「drop directory」を実行します。

drop directory <ディレクトリオブジェクト名>;

以下が実行例になります。

18:04:00 SYS@orcl18c > drop directory DUMPDIR;

ディレクトリが削除されました。

経過: 00:00:00.19

関連記事:Datapumpの方法

ディレクトリオブジェクトを作成すると言ったら、Datapumpを利用したエクスポート/インポートです。

以下に関連記事を載せておきますので確認してみてください。

DataPump(expdp/impdp)でバックアップ/リストアの方法と事前準備

こんにちは!シミダイ(@shimidai2100)です。 Oracle Databaseの論理バックアップ・リストアツー ...

続きを見る

 

関連記事

-Database, OracleDB, インフラ

Copyright© shimidai2100 , 2020 All Rights Reserved.