首页 文章

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

提问于
浏览
1

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

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

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

1 回答

  • 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可以选择的表 . 我希望这有帮助

相关问题