Oracle:如何查询指定表空间中表的内容?
正确的查询方式说明
你的语句执行失败的核心原因是:table1作为业务表,本身并不包含tablespace_name字段——这个字段属于数据库的数据字典视图,不是你业务表的字段。
根据你的需求,分两种场景处理:
1. 直接查询table1的内容(统计行数)
既然table1已经在ts表空间中,直接执行统计语句即可,不需要额外的表空间过滤条件:
SELECT COUNT(*) FROM table1;
如果需要查询表的全部数据,用:
SELECT * FROM table1;
2. 验证table1所属表空间,或查询ts表空间下的所有表
如果你想确认table1是否真的在ts表空间,或者要列出ts表空间下的所有表,需要查询数据库的数据字典视图:
- 查看当前用户下
table1的表空间:
SELECT tablespace_name FROM user_tables WHERE table_name = 'TABLE1'; -- 注意多数数据库(如Oracle)中表名默认存储为大写,需匹配
- 列出
ts表空间下的所有表(当前用户权限范围内):
SELECT table_name FROM user_tables WHERE tablespace_name = 'TS';
如果需要查看所有用户的表,可使用all_tables视图;若有DBA权限,可使用dba_tables视图。
内容的提问来源于stack exchange,提问作者R S Gill
相关产品推荐
相关产品推荐

