Oracle数据库中的SYSTEM表空间

时间:2018-10-07 18:33:05

标签: sql oracle

我不知道如何从oracle数据库的SYSTEM表空间获取所有表。

我正在执行下一条命令:

select * 
from dba_tables 
where tablespace_name='SYSTEM'; 

但是,在此输出中未列出诸如all_users或ALL_TABLES之类的表(我从以下https://www.techonthenet.com/oracle/sys_tables/index.php处从SYSTEM表空间读取了这些表)。

我在做什么错?这就是我的理解:SYSTEM是一个表空间,其中包含有关数据库信息的元数据,这就是为什么它具有某些表(例如“ all_tables”)的原因。

请,如果我错了,请尽可能多地纠正我。

2 个答案:

答案 0 :(得分:1)

在Oracle中,

Tablespace是数据存储的物理或内存位置。您在问题中所指的是schemas

在大多数情况下,数据字典包含视图,而不是表。您可以通过查询all_views而不是all_tables来找到它们。因为它们是动态视图并且不存储数据,所以没有表空间。而是查询架构所有者SYS和'SYSTEM`。

SELECT *
  FROM all_views
 WHERE owner IN ('SYS', 'SYSTEM')

答案 1 :(得分:1)

ALL_USERSALL_TABLES是视图,而不是表,因此它们出现在ALL_VIEWS视图中。以下查询可能对您有用:

SELECT *
  FROM ALL_TABLES
  WHERE TABLESPACE_NAME = 'SYSTEM';

SELECT OWNER, VIEW_NAME
  FROM ALL_VIEWS
  WHERE VIEW_NAME IN ('ALL_USERS', 'ALL_TABLES')

SELECT OWNER, TABLE_NAME
  FROM ALL_TABLES
  WHERE TABLE_NAME IN ('ALL_USERS', 'ALL_TABLES')

See this dbfiddle