回答:
Oracle Databaseのロールには所有者がなく、ディレクトリには所有者がありません。
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;