私はずっと前に作成された独自のOracleロールを持っています。
create role MyRole;
一部のテーブルおよびビューから選択、挿入、更新、および削除する機能が付与されています。
grant select on sometable to MyRole;
grant insert on sometable to MyRole;
grant select on someothertable to MyRole;
-- etc.
ロールに付与された特権の特定のリストを列挙するにはどうすればよいですか?特定のテーブルと、このロールが各テーブルに関して持っている権限を見つけることに興味があります。この情報を回復するにはどうすればよいですか?
データディクショナリから簡単に検索できますROLE_TAB_PRIVS
。そしてこうやって
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'MyRole';
これはうまくいきます:
SELECT DBA_TAB_PRIVS.GRANTEE, TABLE_NAME, PRIVILEGE,DBA_ROLE_PRIVS.GRANTEE
FROM DBA_TAB_PRIVS, DBA_ROLE_PRIVS
WHERE DBA_TAB_PRIVS.GRANTEE = DBA_ROLE_PRIVS.GRANTED_ROLE
AND DBA_TAB_PRIVS.GRANTEE='<ENTER GROUP ROLE HERE>'
AND DBA_ROLE_PRIVS.GRANTEE = '<ENTER ROLE HERE>'
ORDER BY DBA_ROLE_PRIVS.GRANTEE