列出用户在Oracle中具有查询权限的所有表

时间:2014-09-04 12:12:58

标签: sql oracle

我试图查询Oracle数据库以检索所连接用户具有查询权限的所有可用模式中的表列表。以下查询为我提供了所有模式中所有表的列表,但我需要根据权限级别过滤这些结果。

select OWNER || '.' || TABLE_NAME from SYS.ALL_TABLES where SECONDARY='N'

如果用户具有比仅选择其他模式/表更高的权限,但选择是最低要求,那就没问题了。使我进一步复杂化的是,用户可能只对模式的某些表具有权限。我不确定如何在结果中过滤掉这些表格。

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT OWNER || '.' || TABLE_NAME
  FROM SYS.ALL_TABLES
 WHERE SECONDARY = 'N' AND OWNER = 'USER1'
UNION ALL
SELECT OWNER || '.' || TABLE_NAME
  FROM dba_tab_privs
 WHERE GRANTEE = 'USER1' AND privilege = 'SELECT'

这将为您提供user1所有者的所有表以及user1可以选择的表。我希望这有帮助