我正在寻找一个查询,列出所有有权访问特定数据库的用户。希望与此类似,但要查询Oracle数据库。 SQL Server query to find all permissions/access for all users in a database
答案 0 :(得分:0)
Oracle的数据库管理员(DBA)只需执行查询即可查看DBA_SYS_PRIVS
,DBA_TAB_PRIVS
和DBA_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 PROCEDURE
,ON COMMIT REFRESH
,INSERT ANY TABLE
,CREATE ANY JOB
,FLASHBACK ANY TABLE
。等等
select p.* from dba_sys_privs p where p.grantee = upper('<your_user_name>');
要查询诸如DML
,EXECUTION
,DEBUG
,{{1}等对象的TABLE
,VIEW
,PROCEDURE
特权} ...
FUNCTION
查看哪个用户授予了对象特权
select p.* from dba_tab_privs p where p.grantee = upper('<your_user_name>');
可以使用。