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

Oracle 聯機備份深度解析:ARCHIVELOG 模式、表空間備份、恢復原理與 DB2 對比

     編輯:Oracle 資料庫基礎

前言

聯機備份 是 7×24 小時不停機業務的核心保障。不同於離線備份需關閉資料庫,聯機備份在 ARCHIVELOG 模式下對開放的資料庫進行備份,單位為表空間。本文深度剖析 Oracle 聯機備份的運作原理、操作流程、關鍵參數、控制檔保護、重做日誌多工,並對比 DB2 UDB 的聯機備份機制,建立跨平台備份認知。

一、聯機備份核心前提:ARCHIVELOG 模式

  • 資料庫必須運行於 ARCHIVELOG 模式
  • 所有變更(提交/未提交)先寫入 Redo Log Buffer → LGWR 寫入線上重做日誌
  • 重做日誌循環覆寫,需啟動 ARCH 進程歸檔至歸檔日誌
  • 多工歸檔:LOG_ARCHIVE_DUPLEX_DEST 或 LOG_ARCHIVE_DEST_n 寫入多個位置
  • 媒介恢復時:還原備份 + 應用歸檔日誌前滾

二、聯機備份 vs 離線備份

維度離線備份聯機備份
資料庫狀態SHUTDOWN (MOUNT)OPEN (正常服務)
備份單位整個資料庫表空間 (一個或多個)
所需檔案所有資料檔、控制檔、參數檔資料檔、控制檔 (選項)
一致性完全一致 (SCN 統一)不一致備份,需歸檔日誌恢復一致性
業務影響完全中斷無中斷,但產生額外 Redo

三、聯機備份操作流程

1. 切換至 ARCHIVELOG 模式

-- init.ora 設定
LOG_ARCHIVE_START = TRUE
LOG_ARCHIVE_DEST = /u01/arch
LOG_ARCHIVE_FORMAT = arch_%t_%s_%r.arc
LOG_ARCHIVE_DUPLEX_DEST = /u02/arch
LOG_ARCHIVE_DEST_2 = LOCATION=/u03/arch MANDATORY

-- 切換模式
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

-- 驗證
ARCHIVE LOG LIST;
-- 應顯示: Database log mode: Archive Mode

2. 將表空間置於備份模式

ALTER TABLESPACE users BEGIN BACKUP;

內部機制:
- 資料檔標頭記錄 檢查點 SCN (Checkpoint SCN)
- 此後不再更新檢查點 SCN,直到 END BACKUP
- 首次修改區塊時,完整區塊映像寫入 Redo Log (而非僅變更向量)
- 產生大量 Redo,故建議縮短 BEGIN/END 間隔

3. 執行 OS 層面複製

# 快速複製 (cp, dd, rman, 快照, 複製軟體)
cp /u01/oradata/users01.dbf /backup/users01_$(date +%F).dbf

4. 結束備份模式

ALTER TABLESPACE users END BACKUP;

資料檔標頭再次記錄檢查點 SCN,標記備份結束點。恢復時前滾至該 SCN 即可。

5. 備份控制檔 (結構變更後必備)

ALTER DATABASE BACKUP CONTROLFILE TO '/backup/control_$(date +%F).ctl';
-- 或追蹤檔
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

四、關鍵最佳實務

  1. 最小化備份窗口:OS 複製緊接 BEGIN BACKUP 後啟動,END BACKUP 緊接複製完成
  2. 減少用戶活動:備份期間大量 DML 會產生爆量 Redo
  3. 順序備份:依表空間順序逐一 BEGIN/COPY/END,避免同時多表空間備份模式疊加
  4. 重點表空間:SYSTEM、UNDO/ROLLBACK 表空間需特別納入備份計畫
  5. 歸檔日誌備份:聯機備份期間產生的歸檔日誌必須同步備份
  6. 腳本化與驗證:備份腳本自動化、定期恢復演練、校驗檔案完整性

五、DB2 UDB 聯機備份機制對比

日誌定義三層

日誌類型說明
Active Log含未提交/未刷新交易,位於活動日誌目錄
Online Archive Log已提交並寫入磁碟,與活動日誌同目錄
Offline Archive Log從活動目錄移出至其他位置/磁帶

關鍵配置參數

參數說明預設/建議
LOGFILSIZ每日誌檔大小 (4KB 頁數)250
LOGPRIMARY主日誌檔數3
LOGSECOND次要日誌檔數 (-1=無限)-1 (V8+)
NEWLOGPATH日誌儲存路徑變更需重新激活資料庫
MIRRORLOGPATH鏡像日誌路徑 (防單點故障)需重新激活
OVERFLOWLOGPATH前滾搜尋額外路徑允許多目錄
USEREXIT啟動使用者出口程式自動歸檔生產環境建議啟用
BLK_LOG_DSK_FUL磁碟滿時阻擋錯誤視策略而定
LOGRETAIN啟用歸檔日誌 (OFF/ON/RECOVERY)ON

DB2 聯機備份流程

  1. SET LOGRETAIN ON 啟用歸檔 (需重新激活)
  2. BACKUP DATABASE dbname ONLINE 執行聯機備份
  3. 備份完成後,DB2 強制關閉當前活動日誌並歸檔
  4. 鏡像日誌 (MIRRORLOGPATH) 防單點故障
  5. GET DB CFG 查看 "First active log file" 判斷活動/歸檔界線

恢復歷史檔

每次備份/恢復/建表空間/載入/重組自動更新恢復歷史檔,支援時間點恢復 (PITR)。

六、Oracle vs DB2 聯機備份核心差異

特性OracleDB2 UDB
備份模式觸發ALTER TABLESPACE ... BEGIN BACKUPBACKUP DATABASE ... ONLINE (自動)
資料一致性標記檢查點 SCN 寫入資料檔標頭日誌序號 (LSN) 記錄
Redo/Log 產生量備份模式期間首次修改寫完整區塊正常日誌量,無額外放大
控制檔/歷史檔手動備份控制檔自動包含恢復歷史檔
多工歸檔LOG_ARCHIVE_DEST_n / DUPLEX_DESTMIRRORLOGPATH + USEREXIT
恢復單位資料庫/表空間/資料檔資料庫/表空間/增量

七、RMAN 現代化聯機備份 (補充)

Oracle 9i+ 強烈建議使用 RMAN 取代使用者管理備份:

RUN {
  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
  BACKUP AS COMPRESSED BACKUPSET
    TABLESPACE users, tools, indx
    INCLUDE CURRENT CONTROLFILE
    PLUS ARCHIVELOG;
  RELEASE CHANNEL c1;
}
  • 無需手動 BEGIN/END BACKUP (RMAN 內部處理)
  • 區塊級增量備份、壓縮、加密、平行化
  • 恢復指令簡單:RESTORE DATABASE; RECOVER DATABASE;

結語

聯機備份是企業級資料庫高可用的基石。Oracle 透過表空間備份模式 + 歸檔日誌前滾,實現不一致備份的邏輯一致性恢復;DB2 則以日誌序號與自動歸檔機制達到同樣目標。核心原則相通:保留足夠歸檔日誌、多工寫入防單點、自動化腳本消除人為錯誤、定期恢復演練驗證可用性。現代 Oracle 環境請全面採用 RMAN,將備份管理納入標準化運維體系。

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