sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo mostrar todos los privilegios de un usuario en Oracle?

Puede probar estas vistas a continuación.

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

Los DBA y otros usuarios avanzados pueden encontrar los privilegios otorgados a otros usuarios con el DBA_ versiones de estas mismas vistas. Están cubiertos en la documentación .

Esas vistas solo muestran los privilegios otorgados directamente al usuario Encontrar todos los privilegios, incluidos los otorgados indirectamente a través de roles, requieren declaraciones SQL recursivas más complicadas:

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;