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

Oracle 聯機熱備份原理深度解析:從使用者管理到 RMAN 的 SCN 機制

     編輯:Oracle 資料庫基礎

核心前提:歸檔模式

熱備份要求資料庫運行於歸檔模式,確保重做日誌完整保存,支援時間點恢復。

使用者管理熱備份:BEGIN/END BACKUP 的 SCN 鎖定機制

關鍵操作

ALTER TABLESPACE users BEGIN BACKUP;
-- 複製資料檔
ALTER TABLESPACE users END BACKUP;

內部原理

  • BEGIN BACKUP:鎖定該表空間所有資料檔檔頭的檢查點 SCN(Checkpoint SCN)。資料區塊仍可正常讀寫,但檔頭 SCN 凍結。
  • 備份期間:資料庫持續產生重做日誌,SCN 不斷推進。備份完成時,資料檔實際內容已包含至最新 SCN 的變更,但檔頭仍停留在備份開始時的 SCN。
  • 恢復邏輯:還原備份檔後,資料庫從檔頭 SCN 開始應用重做/歸檔日誌,直至當前。因檔頭 SCN ≤ 備份期間任何變更的 SCN,故無遺漏,不丟資料。
  • END BACKUP:釋放檔頭 SCN 鎖定,下一次檢查點會將檔頭 SCN 推進至當前。

實證觀察

查詢 V$DATAFILE_HEADER.CHECKPOINT_CHANGE# 可見:BEGIN BACKUP 後檔頭 SCN 不再變化;即便執行 ALTER SYSTEM CHECKPOINT,該檔頭 SCN 仍維持原值;END BACKUP 後配合檢查點,SCN 才同步推進。

RMAN 熱備份:區塊級 SCN 與增量備份原理

無需 BEGIN/END BACKUP

RMAN 讀取資料區塊時,直接記錄該區塊的 SCN 至備份集控制資訊(Ckp SCN),恢復時從該 SCN 應用日誌。檔頭 SCN 不受影響,避免了使用者管理模式的額外重做日誌產生(因資料區塊首次變更須寫入完整映像至重做日誌)。

增量備份判斷邏輯

  • 每個資料區塊內部儲存「最近修改 SCN」。
  • Level 1 備份掃描所有區塊,比對區塊 SCN 與 Level 0 備份的 Ckp SCN:區塊 SCN ≥ Ckp SCN 則納入備份。
  • 缺點:必須全表掃描所有區塊,I/O 開銷大。

10g Block Change Tracking (BCT) 革命

  • 背景進程記錄自上次備份以來變更的區塊,寫入位圖追蹤檔。
  • RMAN 讀取追蹤檔直接定位變更區塊,跳過全表掃描,大幅提升增量備份效能。
  • 啟用:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '...';

驗證區塊 SCN:DUMP 資料區塊

SELECT file_id, block_id, blocks FROM dba_extents WHERE segment_name='EMPLOYEES';
ALTER SYSTEM DUMP DATAFILE 5 BLOCK 81;
-- trace 檔中 scn: 0x0000.00086c4d (十進位 552013)

修改資料並觸發寫入後,重新 DUMP 可見區塊 SCN 遞增,印證區塊級 SCN 機制。

總結

熱備份本質是「以 SCN 為錨點的時間點一致性」:使用者管理模式鎖定檔頭 SCN,RMAN 記錄區塊 SCN。RMAN 區塊級機制配合 10g BCT,實現了無干擾、高效能的增量備份,是現代 Oracle 備份策略的基石。

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