【发布时间】:2016-01-29 16:21:09
【问题描述】:
我正在尝试从两个不同的表中为特定用户获取角色和权限。我的查询是这样的:
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。
如果您可以帮助改进它,请这样做
提前致谢!
【问题讨论】:
标签: sql oracle database-administration sysdba