我试图查询Oracle数据库以检索所连接用户具有查询权限的所有可用模式中的表列表。以下查询为我提供了所有模式中所有表的列表,但我需要根据权限级别过滤这些结果。
select OWNER || '.' || TABLE_NAME from SYS.ALL_TABLES where SECONDARY='N'
如果用户具有比仅选择其他模式/表更高的权限,但选择是最低要求,那就没问题了。使我进一步复杂化的是,用户可能只对模式的某些表具有权限。我不确定如何在结果中过滤掉这些表格。
答案 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可以选择的表。我希望这有帮助