2010-03-10 91 views
7

我有一個創建不久前自產自銷的Oracle角色:如何枚舉授予Oracle角色的權限列表?

create role MyRole; 

它被授予選擇,插入,更新和一些表和視圖刪除的能力。

grant select on sometable to MyRole; 
grant insert on sometable to MyRole; 
grant select on someothertable to MyRole; 
-- etc. 

我該如何列舉授予角色的特權列表?我有興趣發現這個角色對每個表格的具體表格和權利。我怎樣才能恢復這些信息?

回答

8

您可以簡單地從數據字典ROLE_TAB_PRIVS中搜索。並且這樣做

SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE ='MyRole';

3

這個效果很好:

SELECT DBA_TAB_PRIVS.GRANTEE, TABLE_NAME, PRIVILEGE,DBA_ROLE_PRIVS.GRANTEE 
FROM DBA_TAB_PRIVS, DBA_ROLE_PRIVS 
WHERE DBA_TAB_PRIVS.GRANTEE = DBA_ROLE_PRIVS.GRANTED_ROLE 
AND DBA_TAB_PRIVS.GRANTEE='<ENTER GROUP ROLE HERE>' 
AND DBA_ROLE_PRIVS.GRANTEE = '<ENTER ROLE HERE>' 
ORDER BY DBA_ROLE_PRIVS.GRANTEE