我试图在DBA_SYS_PRIVS表中查找具有特定权限的所有用户。该表有一个GRANTEE列,根据Oracle官方网站,GRANTEE列显示" Grantee名称,用户或角色接收授权"。那么我怎么知道GRANTEE是帐户还是角色?例如,在Oracle DB中有一个名为SYS的角色和一个名为SYS的帐户。那么我怎么知道这是一个帐户或角色????
同样在表DBA_TAB_PRIVS中,有一个名为GRANTEE的列。在此表中,GRANTEE列是"授予访问权限的用户的名称"。所以我真的很困惑因为" GRANTEE"列在两个不同的表中表示不同的东西
请帮忙,谢谢你说#ss>
答案 0 :(得分:1)
Oracle中没有SYS
角色。
SQL> select * from dba_roles where role='SYS';
no rows selected
实际上,您无法创建与用户名相同名称的角色。
SQL> create role sys;
create role sys
*
ERROR at line 1:
ORA-01921: role name 'SYS' conflicts with another user or role name
仅获取没有用户名的角色。
SQL>select grantee from dba_sys_privs where grantee not in(select username from all_users);
仅限获得没有角色的用户。
SQL>select grantee from dba_sys_privs where grantee in(select username from all_users)