how to query the priviledge of directory

遇到一个疑惑,客户让帮忙看看如何才能查到一个已经被授权read,write某directory权限的用户,其read,write的权限显示在了哪里,于是想都没想给了客户dba_directories视图的建议,但dba_directories视图确实没有想象的需要的东西

SQL> desc dba_directories;
Name Null? Type
—————————————————————– ——– ——————————————–
OWNER                                        NOT NULL                  VARCHAR2(30)
DIRECTORY_NAME                NOT NULL                  VARCHAR2(30)
DIRECTORY_PATH                                                        VARCHAR2(4000)

做个试验。。。follow this…

//create the directory

1* create or replace directory expdir as ‘/home/oracle/expdir’
SQL> /

Directory created.

1* grant read,write on directory expdir to scott
SQL> /

Grant succeeded.

现在scott用户应当对于directory expdir有读、写的权限,这read,write到底纪录在哪里呢?说到底,directory也是oracle中的一个object,那这部分的权限信息纪录在哪里呢?

directory的授权信息都记录在了dba_tab_privs里面,大跌眼镜啊。。directory被oracle当做table纪录在了dba_tab_privs视图中,看来以后真不能“以貌取人”了。。

1* select grantee,owner,grantor,PRIVILEGE from dba_tab_privs where table_name=‘EXPDIR’
SQL> /

GRANTEE                 OWNER              GRANTOR                 PRIVILEGE
—————————— —————————— ——————————
SCOTT                         SYS                          SYS                             READ
SCOTT                         SYS                          SYS                            WRITE

–EOF–