角色在oracle中有所有者吗?


8

假设我已经使用用户X登录到oracle数据库,然后用户X使用create role命令创建了一些角色。我想知道用户X是角色的所有者吗?我可以选择用户X创建的所有角色吗?

Answers:


4

Oracle数据库中的角色没有所有者,目录也没有所有者。

当具有CREATE ROLESYSDBA特权的用户创建角色时,将自动WITH ADMIN OPTION为该用户分配该角色,这意味着该用户随后可以将该角色授予其他用户,即使该特权CREATE ROLE已从该用户撤消。

您可以查看在查询DBA_ROLE_PRIVS视图中为哪些用户分配了哪些角色,或者USER_ROLE_PRIVS是否想知道为当前用户分配了哪些角色。

此外,如果已经存在具有相同名称的角色,则用户无法创建角色。但是,您可以审核角色的创建和授予。您可以使用AUDIT ROLE语句(如果由于某种原因禁用了它NOAUDIT ROLE),然后查询DBA_AUDIT_TRAIL视图。


1

尽管角色没有所有者,但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;

0

如果您具有角色的admin选项,则可以删除该角色,即使您不具有drop角色特权或“拥有”该角色,例如,也没有创建该角色。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.