ora-31603: 物件“表名”屬於型別 Table,在方案“使用者名稱”中未找到

shytodear發表於2014-03-24
1、一次想查詢表附加日誌:
dbms_metadata.get_ddl('TABLE','表名','使用者名稱') from dual;

2、報錯如下:
ora-31603:物件“表名”屬於型別 Table,在方案“使用者名稱”中未找到

3、原因:
使用者缺少相關資料字典檢視的查詢許可權。

4、解決辦法:
grant select_catalog_role to 使用者名稱.表名;

注:授權select any dictionary許可權則報錯依舊。

5、總結:

select any dictionary 與 select_catalog_role
相同之處:有了這兩個中的一個,基本就可以查詢資料字典
不同之處
1) select any dictionary是一種系統許可權(system privilege),而select_catalog_role 是一種角色(a role)。
2) 角色的話需要重新登入或者顯式的set role 來生效,而賦予系統許可權是立即生效的。(P.S. 同樣revoke許可權也     是立即生效)
3) select_catalog_role可以檢視一些資料字典的檢視·(可以看role的定義),如dba_之類的,而select any              
    dictionary   可以檢視sys的表,select_catalog_role看不到。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27126919/viewspace-1128070/,如需轉載,請註明出處,否則將追究法律責任。

相關文章