177

如何在 Oracle SQL 中列出模式中的所有表?

4

14 回答 14

244

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

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'
于 2010-02-11T21:15:59.993 回答
76
SELECT table_name  from all_tables where owner = 'YOURSCHEMA';
于 2010-02-11T20:02:42.457 回答
15

您可以查询USER_TABLES

select TABLE_NAME from user_tables
于 2010-02-11T20:00:41.253 回答
4

如果您以没有 DBA 权限的普通用户身份登录,您可以使用以下命令查看您自己的架构的所有表和视图。

select * from tab;
于 2012-04-21T18:04:45.470 回答
4

如果您知道所有者名称,则可以直接运行第二个查询。

--首先您可以选择所有存在的所有者:

SELECT DISTINCT(owner) from SYS.ALL_TABLES;

--然后您可以看到该所有者下的表格:

SELECT table_name, owner from all_tables where owner like ('%XYZ%');
于 2019-06-26T21:41:23.537 回答
3
select * from cat;

它将显示您的架构中的所有表 cat 同义词 user_catalog

于 2013-08-11T00:00:34.097 回答
2

试试这个,换?使用您的架构名称

select TABLE_NAME from  INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA =?
  AND TABLE_TYPE = 'BASE TABLE'
于 2010-02-11T20:00:56.337 回答
2

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

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

否则,如果您只需要 SQLPlus 或类似 Oracle 客户端中的信息,那么已经提到的查询之一就可以了。例如:

select TABLE_NAME from user_tables
于 2010-02-11T20:13:54.147 回答
2
select TABLE_NAME from user_tables;

上面的查询将为您提供该用户中存在的所有表的名称;

于 2015-11-28T18:18:06.423 回答
2
select * from user_tables;

(显示所有表格)

于 2016-07-07T15:31:28.163 回答
1

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

于 2017-08-09T21:50:08.070 回答
1

OWNER架构下所有表的表名和行计数器:

SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'

于 2018-09-28T13:30:01.333 回答
0

查看我的简单实用程序以显示有关 db 架构的一些信息。它基于:使用 Oracle 数据字典对数据模型进行逆向工程

于 2010-02-11T20:01:22.003 回答
0

如果您还需要获取表格的大小,这将很方便:

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

于 2017-07-25T04:08:29.650 回答