Oracleのロールには所有者がいますか?


8

ユーザーXを使用してoracleデータベースにログインし、ユーザーXがcreate roleコマンドを使用していくつかのロールを作成するとします。ユーザーXがロールの所有者であることを知りたいですか?ユーザーXが作成したすべてのロールを選択できますか?

回答:


4

Oracle Databaseのロールには所有者がなく、ディレクトリには所有者がありません。

CREATE ROLEまたはSYSDBA特権を持つユーザーがロールを作成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

ロールに対する管理者オプションがある場合は、そのロールを削除できます。たとえば、ロールの削除特権を持っていないか、ロールを「所有」していない場合でも、ロールを作成していません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.