首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Oracle 10g 查詢表所屬表空間:DBA_DATA_FILES 與 DBA_TABLES 聯查方法

     編輯:程式設計綜合問答

已知表名,需查詢該表屬於哪個表空間。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 (僅自己擁有的對象)。

補充:表空間 vs 資料庫

  • 資料庫:Oracle Instance + 資料檔 + 控制檔 + Redo Log 的完整集合。
  • 表空間:邏輯儲存單位,一個資料庫包含多個表空間 (SYSTEM, SYSAUX, USERS, 自訂...)。
  • 表建立時指定 TABLESPACE users,若未指定用用戶 DEFAULT TABLESPACE。

工具替代

  • SQL Developer / DBeaver / PL/SQL Developer:圖形化瀏覽表屬性,直接顯示 Tablespace 欄位。
  • 命令列:sqlplus / as sysdba → 執行上述 SQL。

關鍵:查 DBA_TABLES.TABLESPACE_NAME 最直接;若無 DBA 權限用 USER_TABLES。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved