Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment afficher tous les privilèges d'un utilisateur dans Oracle ?

Vous pouvez essayer ces vues ci-dessous.

SELECT * FROM USER_SYS_PRIVS; 
SELECT * FROM USER_TAB_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;

Les administrateurs de bases de données et autres utilisateurs expérimentés peuvent trouver les privilèges accordés aux autres utilisateurs avec le DBA_ versions de ces mêmes vues. Ils sont traités dans la documentation .

Ces vues ne montrent que les privilèges accordés directement à l'utilisateur. Trouver tous les privilèges, y compris ceux accordés indirectement via des rôles, nécessitent des instructions SQL récursives plus complexes :

select * from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER' order by 1,2,3;
select * from dba_sys_privs  where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3;
select * from dba_tab_privs  where grantee = '&USER' or grantee in (select granted_role from dba_role_privs connect by prior granted_role = grantee start with grantee = '&USER') order by 1,2,3,4;