Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como posso listar TODAS as concessões que um usuário recebeu?


Se você deseja mais do que apenas concessões diretas de tabela (por exemplo, concessões por meio de funções, privilégios do sistema, como selecionar qualquer tabela etc.), aqui estão algumas consultas adicionais:

Privilégios do sistema para um usuário:
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;

Concessões diretas para tabelas/visualizações:
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;

Concessões indiretas para tabelas/visualizações:
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;