Answers:
Oracle数据库中的角色没有所有者,目录也没有所有者。
当具有CREATE ROLE
或SYSDBA
特权的用户创建角色时,将自动WITH ADMIN OPTION
为该用户分配该角色,这意味着该用户随后可以将该角色授予其他用户,即使该特权CREATE ROLE
已从该用户撤消。
您可以查看在查询DBA_ROLE_PRIVS
视图中为哪些用户分配了哪些角色,或者USER_ROLE_PRIVS
是否想知道为当前用户分配了哪些角色。
此外,如果已经存在具有相同名称的角色,则用户无法创建角色。但是,您可以审核角色的创建和授予。您可以使用AUDIT ROLE语句(如果由于某种原因禁用了它NOAUDIT ROLE
),然后查询DBA_AUDIT_TRAIL
视图。
尽管角色没有所有者,但dba_role_privs既显示用户又向角色授予特权。
--This lists both users and roles
SELECT * FROM dba_role_privs
WHERE admin_option = 'YES'
order by grantee, granted_role;
内部加入dba_users,以仅查看在角色上具有admin选项的用户。
--This lists only users with admin option on roles
SELECT rp.grantee, rp.granted_role, rp.admin_option
FROM dba_role_privs rp
JOIN dba_users u
ON rp.grantee = u.username
WHERE admin_option = 'YES'
ORDER BY grantee, granted_role;