ORACLE查询以查找数据库中所有用户的所有权限/访问

时间:2018-10-02 18:50:37

标签: sql oracle database-permissions

我正在寻找一个查询,列出所有有权访问特定数据库的用户。希望与此类似,但要查询Oracle数据库。 SQL Server query to find all permissions/access for all users in a database

2 个答案:

答案 0 :(得分:0)

Oracle的数据库管理员(DBA)只需执行查询即可查看DBA_SYS_PRIVSDBA_TAB_PRIVSDBA_ROLE_PRIVS中的行,以检索有关与系统角色

例如,希望查看授予所有用户的所有系统特权的DBA会发出以下查询:

SELECT *
  FROM DBA_SYS_PRIVS;

要确定哪些用户具有 direct 授予对的访问权限,我们将使用DBA_TAB_PRIVS视图:

SELECT *
  FROM DBA_TAB_PRIVS;

最后,查询DBA_ROLE_PRIVS视图具有许多相同的信息,但适用于角色,其中GRANTED_ROLE列指定了相关角色:

SELECT *
  FROM DBA_ROLE_PRIVS;

参见整个教程here

答案 1 :(得分:0)

查询已授予哪个用户system privilege,例如DEBUG ANY PROCEDUREON COMMIT REFRESHINSERT ANY TABLECREATE ANY JOBFLASHBACK ANY TABLE。等等

select p.* from dba_sys_privs p where p.grantee = upper('<your_user_name>');

要查询诸如DMLEXECUTIONDEBUG,{{1}等对象的TABLEVIEWPROCEDURE特权} ...

FUNCTION

查看哪个用户授予了对象特权

select p.* from dba_tab_privs p where p.grantee = upper('<your_user_name>');

可以使用。