已知表名,需查詢該表屬於哪個表空間。Oracle 中表屬於表空間,表空間由資料檔組成。
-- 方法一:直接查 DBA_TABLES (需 DBA 權限)
SELECT tablespace_name
FROM dba_tables
WHERE table_name = 'TBL_PURVIEW'; -- 表名大寫
-- 方法二:透過 DBA_SEGMENTS (包含索引、LOB 等段)
SELECT tablespace_name
FROM dba_segments
WHERE segment_name = 'TBL_PURVIEW' AND segment_type = 'TABLE';
-- 方法三:查表空間對應的資料檔路徑 (參考原回答思路)
SELECT file_name, tablespace_name
FROM dba_data_files
WHERE tablespace_name = (
SELECT tablespace_name FROM dba_tables WHERE table_name = 'TBL_PURVIEW'
);
SELECT ANY DICTIONARY 或 DBA 角色才能查 DBA_* 視圖。USER_TABLES、USER_SEGMENTS (僅自己擁有的對象)。TABLESPACE users,若未指定用用戶 DEFAULT TABLESPACE。sqlplus / as sysdba → 執行上述 SQL。關鍵:查 DBA_TABLES.TABLESPACE_NAME 最直接;若無 DBA 權限用 USER_TABLES。