如何在Oracle SQL中列出架构中的所有表?

如何在Oracle SQL中列出架构中的所有表?

要查看另一个模式中的所有表,您需要具有一个或多个以下系统权限:

SELECT ANY DICTIONARY (SELECT | INSERT | UPDATE | DELETE) ANY TABLE 

还是大锤子,DBA的angular色。

有了这些,你可以select:

 SELECT DISTINCT OWNER, OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER = '[some other schema]' 

如果没有这些系统权限,您只能看到已被授予访问权限的表,无论是直接还是通过angular色。

 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' 
 SELECT table_name from all_tables where owner = 'YOURSCHEMA'; 

你可以查询USER_TABLES

 select TABLE_NAME from user_tables 

试试这个,换掉? 与您的架构名称

 select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA =? AND TABLE_TYPE = 'BASE TABLE' 

如果您以普通用户的身份login而没有DBA权限,则可以使用以下命令查看您自己的模式的所有表和视图。

 select * from tab; 
 select * from user_tables; 

(显示所有表格)

如果您使用JDBC(Java)访问Oracle,则可以使用DatabaseMetadata类。 如果您使用ADO.NET访问Oracle,则可以使用类似的方法。

如果您使用ODBC访问Oracle,则可以使用SQLTables函数。

否则,如果您只需要SQLPlus或类似的Oracle客户端中的信息,则已经提到的其中一个查询将会执行。 例如:

 select TABLE_NAME from user_tables 
 select * from cat; 

它会显示你的schema_cat中的所有表的同义词user_catalog

SELECT table_name,owner FROM all_tables where owner ='schema_name'order by table_name

看看我的简单实用程序来显示一些关于数据库模式的信息。 它基于: 使用Oracle数据字典反向工程数据模型

 select TABLE_NAME from user_tables; 

上面的查询会给你该用户所有表的名字;

如果您还需要获得桌子的大小,这将是方便的:

select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1