2010-03-10 4 views
7

Ich habe eine homegrown Oracle Rolle, die schon vor langer Zeit erstellt wurde:Wie kann ich die Liste der einer Oracle-Rolle gewährten Berechtigungen aufzählen?

create role MyRole; 

es die Fähigkeit gewährt worden ist zum Auswählen, Einfügen, Aktualisieren und Löschen von einigen Tabellen und Ansichten.

grant select on sometable to MyRole; 
grant insert on sometable to MyRole; 
grant select on someothertable to MyRole; 
-- etc. 

Wie kann ich jetzt die spezifische Liste der Berechtigungen auflisten, die der Rolle gewährt wurden? Ich bin daran interessiert, die spezifischen Tabellen und die Rechte zu ermitteln, die diese Rolle in Bezug auf jede Tabelle hat. Wie kann ich diese Informationen wiederherstellen?

Antwort

8

Sie können einfach aus Datenwörterbuch ROLE_TAB_PRIVS suchen. Und machen Sie das so

SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'MyRole';

3

das funktioniert gut:

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 
Verwandte Themen