首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 表空間與資料檔全生命週期管理:建立、擴展、離線、唯讀、刪除與監控實戰

     編輯:Oracle 資料庫基礎

核心架構:三大物理檔案與表空間分類

  • 資料檔:實際儲存資料
  • 控制檔:資料庫元資料 (檔案位置、SCN、檢查點等)
  • Redo 日誌:變更記錄,保證恢復能力

表空間分類:SYSTEM (核心字典) + 非 SYSTEM (用戶資料、索引、Undo、Temp)。最佳實踐:資料/索引/Undo/Temp 分離獨立表空間。

一、建立表空間:現代語法與本地管理

CREATE TABLESPACE userdat
DATAFILE '/home/oracle/oradata/userdat01.dbf'
SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 20M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
  • LOCAL:位圖管理 Extent (預設、推薦),無字典爭用。
  • DICTIONARY:舊版字典管理,已棄用。
  • AUTO SEGMENT SPACE:位圖管理自由清單,高併發插入無爭用。

二、特殊用途表空間

類型用途管理方式
UNDO僅存儲 Undo 段強制 LOCAL
TEMP僅供排序/雜湊/臨時段建議 LOCAL
-- 指定預設暫存表空間
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

三、狀態控制:離線/上線、唯讀/讀寫

-- 離線 (維護/備份/損壞隔離)
ALTER TABLESPACE users OFFLINE [NORMAL | TEMPORARY | IMMEDIATE];
ALTER TABLESPACE users ONLINE;

-- 唯讀 (歷史歸檔/唯讀報表/跨平台遷移)
ALTER TABLESPACE users READ ONLY;
ALTER TABLESPACE users READ WRITE;

限制:SYSTEM、含作用中 Undo 段、預設 Temp 表空間不可離線。

四、刪除表空間

-- 含內容與資料檔一併刪除
DROP TABLESPACE userdat INCLUDING CONTENTS AND DATAFILES;

五、資料檔動態調整

-- 手動調整大小
ALTER DATABASE DATAFILE '/home/oracle/oradata/users01.dbf' RESIZE 20M;

-- 新增資料檔至表空間
ALTER TABLESPACE users ADD DATAFILE '/home/oracle/oradata/users02.dbf' SIZE 100M;

-- 設定 OMF (Oracle Managed Files) 預設路徑
ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/home/oracle/oradata';
CREATE TABLESPACE userdat2 DATAFILE SIZE 2M; -- 自動生成 OMF 檔名

六、監控查詢:掌握空間與健康度

-- 表空間總覽
SELECT * FROM V$TABLESPACE;

-- 資料檔詳情
SELECT * FROM V$DATAFILE;

-- 表空間使用率與最大連續自由空間 (關鍵指標)
SELECT tablespace_name,
       ROUND(100 * SUM(fs.bytes) / df.total_bytes, 2) AS pct_free,
       MAX(fs.bytes)/1024/1024 AS max_free_mb
FROM dba_free_space fs,
     (SELECT tablespace_name, SUM(bytes) total_bytes FROM dba_data_files GROUP BY tablespace_name) df
WHERE fs.tablespace_name = df.tablespace_name
GROUP BY tablespace_name, df.total_bytes;

七、最佳實踐清單

  1. 啟用 AUTOEXTEND + MAXSIZE 防止空間耗盡宕機。
  2. 採用 OMF 簡化檔案管理,避免硬編碼路徑。
  3. 定期執行上述監控 SQL,設定閾值告警 (如 < 15% 或最大連續塊 < 100MB)。
  4. 歷史歸檔表空間轉 READ ONLY,配合備份策略減少備份窗口。
  5. Undo 表空間啟用 RETENTION GUARANTEE 保護長查詢/閃回需求。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved