我不知道如何从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”)的原因。
请,如果我错了,请尽可能多地纠正我。
答案 0 :(得分:1)
Tablespace
是数据存储的物理或内存位置。您在问题中所指的是schemas
。
在大多数情况下,数据字典包含视图,而不是表。您可以通过查询all_views而不是all_tables来找到它们。因为它们是动态视图并且不存储数据,所以没有表空间。而是查询架构所有者SYS
和'SYSTEM`。
SELECT *
FROM all_views
WHERE owner IN ('SYS', 'SYSTEM')
答案 1 :(得分:1)
ALL_USERS
和ALL_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')