2010-03-10 88 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