Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso elencare TUTTE le sovvenzioni ricevute da un utente?

Se desideri qualcosa di più delle semplici concessioni di tabelle dirette (ad es. concessioni tramite ruoli, privilegi di sistema come selezionare qualsiasi tabella, ecc.), ecco alcune query aggiuntive:

Privilegi di sistema per un utente:

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;

Concessioni dirette a tabelle/viste:

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;

Concessioni indirette a tabelle/viste:

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;