directory_name用于特定架构

时间:2014-02-11 04:11:27

标签: oracle

当我尝试查询时,

SELECT owner, directory_name, directory_path FROM all_directories;

OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH  
------------------------------ ------------------------------ ----------------
SYS                            MY_DIR_NAME                       E:\..... 
SYS                            OTHER_DIR_NAME1                   E:\..... 
SYS                            OTHER_DIR_NAME2                   E:\..... 

说,MY_DIR_NAME是我在我的架构中使用的那个,并列在我的下面 架构层次结构(Connections->my_schema_name->Directories->MY_DIR_NAME)。我的问题是如何知道哪个用于我的架构, 不在Directories文件夹中搜索相同内容。其次,我如何向directory下的other_schema_name授予权限 在my_schema_name中使用。

3 个答案:

答案 0 :(得分:2)

不幸的是,all_directories(及其更强大的表兄,dba_directories)显示OWNER,这可能令人困惑,因为所有目录对象都归SYS所有。

当您以架构和查询all_directories身份登录时,您确实看到架构具有某些权限的目录对象(例如READ,WRITE)。

您可以通过以下方式授予权限:

GRANT READ, WRITE ON DIRECTORY MY_DIR_NAME TO other_schema_name;

答案 1 :(得分:1)

您可以使用以下查询来查找具有READWIRTE特权的目录。

SELECT grantor, grantee, table_schema, table_name, privilege
FROM all_tab_privs
WHERE grantee= '<SCHEMA_NAME>'
AND   privilege IN ('READ', 'WRITE');

尝试以下查询以授予READ&amp;对目录的WRITE权限。

GRANT read, write ON directory <directory_name> TO <schama_name>;

答案 2 :(得分:1)

目录是不属于任何特定用户的数据库对象。这是其中一个原因,您没有看到USER_DIRECTORIES,类似于您对其他数据库对象的其他 USER _ 视图。

对于目录,您有ALL_DIRECTORIESDBA_DIRECTORIES。第一个,列出了您有权访问的目录。

您只需使用GRANT将目录的权限授予另一个架构

即可