web-dev-qa-db-fra.com

Comment puis-je énumérer la liste des privilèges accordés à un rôle Oracle?

J'ai un rôle d'oracle maison créé depuis longtemps:

create role MyRole;

On a accordé la possibilité de sélectionner, d'insérer, de mettre à jour et de 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 sur chaque table. Comment puis-je récupérer ces informations?

14
Chris Farmer

Vous pouvez simplement rechercher à partir du dictionnaire de données ROLE_TAB_PRIVS. Et faire comme ça

Sélectionnez * à partir de rôle_tab_privs où rôle = 'myrole';

13
Shyamkkhadka

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
5
Theodore.C