如何在 Oracle SQL 中列出模式中的所有表?
要查看另一个模式中的所有表,您需要具有以下一项或多项系统权限:
SELECT ANY DICTIONARY (SELECT | INSERT | UPDATE | DELETE) ANY TABLE
或大锤,DBA 角色。
使用其中任何一个,您可以选择:
SELECT DISTINCT OWNER, OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER = '[some other schema]'
如果没有这些系统权限,您只能查看已被授予某种级别访问权限的表,无论是直接访问还是通过角色访问。
SELECT DISTINCT OWNER, OBJECT_NAME FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER = '[some other schema]'
最后,您始终可以查询您自己的表的数据字典,因为您对表的权限不能被撤销(从 10g 开始):
SELECT DISTINCT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE'