我正在尝试从两个不同的表中为特定用户获取角色和权限。我的查询是这样的:
Select r.grantee, r.granted_role , s.privilege
From dba_role_privs r, dba_sys_privs s
Where r.grantee=s.grantee and r.grantee=(select username from dba_users where username='HR');
我结束了这个:
GRANTEE GRANTED_ROLE PRIVILEGE
---------- -------------------- --------------------
HR DBA CREATE VIEW
HR RESOURCE CREATE VIEW
HR DBA UNLIMITED TABLESPACE
HR RESOURCE UNLIMITED TABLESPACE
HR DBA CREATE DATABASE LINK
HR RESOURCE CREATE DATABASE LINK
HR DBA CREATE SEQUENCE
HR RESOURCE CREATE SEQUENCE
HR DBA CREATE SESSION
HR RESOURCE CREATE SESSION
HR DBA ALTER SESSION
GRANTEE GRANTED_ROLE PRIVILEGE
---------- -------------------- --------------------
HR RESOURCE ALTER SESSION
HR DBA CREATE SYNONYM
HR RESOURCE CREATE SYNONYM
14 rows selected.
当用户没有很多角色/权限时这很好,但是对于像 SYS 这样的用户,例如,我最终得到10600 rows selected.
有没有办法让查询结果更好?我错过了加入吗?
PS:我正在研究oracle 11g。
如果您可以帮助使其变得更好,请这样做
先谢谢了!