一只甜甜圈
SELECT owner, table_name FROM dba_tables这是假设您可以访问DBA_TABLES数据字典视图如果您没有这些特权,但需要它们,您可以请求DBA显式地授予您在该表上的特权,或者,DBA授予您SELECT ANY DICTIONARY特权SELECT_CATALOG_ROLE角色(这两种角色都允许您查询任何数据字典表)。当然,您可能想要排除某些模式,例如SYS和SYSTEM其中有大量您可能不关心的Oracle表。或者,如果您无法访问DBA_TABLES,您可以通过ALL_TABLES意见:SELECT owner, table_name FROM all_tables虽然,这可能是数据库中可用表的子集(ALL_TABLES显示用户已被授予访问权限的所有表的信息)。如果您只关心您拥有的表,而不是您可以访问的表,则可以使用USER_TABLES:SELECT table_name FROM user_tables自USER_TABLES只有关于您拥有的表的信息,它没有OWNER列-根据定义,所有者是你。Oracle还有许多遗留数据字典视图-TAB, DICT, TABS,和CAT例如.可以用来。一般来说,除非您绝对需要将脚本移植到Oracle 6,否则我不会建议使用这些遗留视图。Oracle已经很长时间没有更改这些视图了,因此它们在更新类型的对象方面经常会出现问题。例如,TAB和CAT视图都显示了有关用户回收站中的表的信息,而[DBA|ALL|USER]_TABLES视图全部过滤掉。CAT还显示了有关物化视图日志的信息。TABLE_TYPE这不太可能是你真正想要的。DICT合并表和同义词,而不告诉您是谁拥有该对象。