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?
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';
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