Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie zeige ich alle Privilegien eines Benutzers in Oracle an?

Sie können die folgenden Ansichten ausprobieren.

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

DBAs und andere Hauptbenutzer können die Privilegien finden, die anderen Benutzern mit dem DBA_ gewährt wurden Versionen derselben Ansichten. Sie werden in der Dokumentation behandelt .

Diese Ansichten zeigen nur die Berechtigungen, die direkt gewährt wurden an den Benutzer. alle finden die Berechtigungen, einschließlich der indirekt über Rollen gewährten, erfordern kompliziertere rekursive SQL-Anweisungen:

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;