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

¿Cómo puedo enumerar TODAS las subvenciones que recibió un usuario?

Si desea algo más que concesiones de mesa directas (por ejemplo, concesiones a través de funciones, privilegios del sistema como seleccionar cualquier mesa, etc.), aquí hay algunas consultas adicionales:

Privilegios del sistema para un usuario:

SELECT PRIVILEGE
  FROM sys.dba_sys_privs
 WHERE grantee = <theUser>
UNION
SELECT PRIVILEGE 
  FROM dba_role_privs rp JOIN role_sys_privs rsp ON (rp.granted_role = rsp.role)
 WHERE rp.grantee = <theUser>
 ORDER BY 1;

Concesiones directas a tablas/vistas:

SELECT owner, table_name, select_priv, insert_priv, delete_priv, update_priv, references_priv, alter_priv, index_priv 
  FROM table_privileges
 WHERE grantee = <theUser>
 ORDER BY owner, table_name;

Concesiones indirectas a tablas/vistas:

SELECT DISTINCT owner, table_name, PRIVILEGE 
  FROM dba_role_privs rp JOIN role_tab_privs rtp ON (rp.granted_role = rtp.role)
 WHERE rp.grantee = <theUser>
 ORDER BY owner, table_name;