Oracle to list a user privilege

Question:  I want to display all of the privileges for an Oracle user, including direct grants and role grants.  How do I display everything that has been granted to  user?

Answer: For full scripts, download the Oracle script collection.  There are many views that contain the privileges for a user:

  • dba_sys_privs
  • dba_tab_privs
  • dba_role_privs
  • table_privileges

This query shows all table-level granted privileges for a user named 'MYUSER':

select
   owner,
   table_name,
   select_priv,
   insert_priv,
   delete_priv,
   update_priv,
   references_priv,
   alter_priv,
   index_priv
from
   table_privileges
where
   grantee = 'USER_A'
order by
   owner,
   table_name;

This query shows all role privileges for a user:

select distinct
   owner,
   table_name,
   privilege
from
   dba_role_privs rp,
   role_tab_privs rtp
where
   rp.granted_role = rtp.role
and
   rp.grantee = 'MYUSER'
order by
   owner,
   table_name;

The following example will display all system and role privileges for a user named MYUSER:

select
   privilege
from
   sys.dba_sys_privs
 where
   grantee = 'MYUSER'
union
select
   privilege
from
   dba_role_privs rp
join
   role_sys_privs rsp
on (rp.granted_role = rsp.role)
 where rp.grantee = 'MYUER'
 order by 1;

原文地址:https://www.cnblogs.com/yaoyangding/p/14601456.html