2010-03-10 9 views
7

J'ai un rôle Homegrown Oracle qui a été créé il y a longtemps:Comment puis-je énumérer la liste des privilèges accordés à un rôle Oracle?

create role MyRole; 

Il a été accordé la possibilité de sélectionner, insérer, mettre à jour et supprimer des tables et des vues.

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

Comment puis-je maintenant énumérer la liste spécifique des privilèges accordés au rôle? Je suis intéressé à découvrir les tables spécifiques et les droits de ce rôle par rapport à chaque table. Comment puis-je récupérer cette information?

Répondre

8

Vous pouvez simplement effectuer une recherche à partir du dictionnaire de données ROLE_TAB_PRIVS. Et faites comme ceci

SELECT * FROM ROLE_TAB_PRIVS OERE ROLE = 'MyRole';

3

cela fonctionne bien:

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