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

Comment puis-je répertorier TOUTES les subventions qu'un utilisateur a reçues ?

Si vous voulez plus que de simples attributions directes de table (par exemple, des attributions via des rôles, des privilèges système tels que sélectionner n'importe quelle table, etc.), voici quelques requêtes supplémentaires :

Privilèges système pour un utilisateur :

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;

Accords directs aux tables/vues :

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;

Octrois indirects aux tables/vues :

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;