聯機備份 是 7×24 小時不停機業務的核心保障。不同於離線備份需關閉資料庫,聯機備份在 ARCHIVELOG 模式下對開放的資料庫進行備份,單位為表空間。本文深度剖析 Oracle 聯機備份的運作原理、操作流程、關鍵參數、控制檔保護、重做日誌多工,並對比 DB2 UDB 的聯機備份機制,建立跨平台備份認知。
LOG_ARCHIVE_DUPLEX_DEST 或 LOG_ARCHIVE_DEST_n 寫入多個位置| 維度 | 離線備份 | 聯機備份 |
|---|---|---|
| 資料庫狀態 | SHUTDOWN (MOUNT) | OPEN (正常服務) |
| 備份單位 | 整個資料庫 | 表空間 (一個或多個) |
| 所需檔案 | 所有資料檔、控制檔、參數檔 | 資料檔、控制檔 (選項) |
| 一致性 | 完全一致 (SCN 統一) | 不一致備份,需歸檔日誌恢復一致性 |
| 業務影響 | 完全中斷 | 無中斷,但產生額外 Redo |
-- 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
ALTER TABLESPACE users BEGIN BACKUP;
內部機制:
- 資料檔標頭記錄 檢查點 SCN (Checkpoint SCN)
- 此後不再更新檢查點 SCN,直到 END BACKUP
- 首次修改區塊時,完整區塊映像寫入 Redo Log (而非僅變更向量)
- 產生大量 Redo,故建議縮短 BEGIN/END 間隔
# 快速複製 (cp, dd, rman, 快照, 複製軟體)
cp /u01/oradata/users01.dbf /backup/users01_$(date +%F).dbf
ALTER TABLESPACE users END BACKUP;
資料檔標頭再次記錄檢查點 SCN,標記備份結束點。恢復時前滾至該 SCN 即可。
ALTER DATABASE BACKUP CONTROLFILE TO '/backup/control_$(date +%F).ctl';
-- 或追蹤檔
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
| 日誌類型 | 說明 |
|---|---|
| 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 |
SET LOGRETAIN ON 啟用歸檔 (需重新激活)BACKUP DATABASE dbname ONLINE 執行聯機備份MIRRORLOGPATH) 防單點故障GET DB CFG 查看 "First active log file" 判斷活動/歸檔界線每次備份/恢復/建表空間/載入/重組自動更新恢復歷史檔,支援時間點恢復 (PITR)。
| 特性 | Oracle | DB2 UDB |
|---|---|---|
| 備份模式觸發 | ALTER TABLESPACE ... BEGIN BACKUP | BACKUP DATABASE ... ONLINE (自動) |
| 資料一致性標記 | 檢查點 SCN 寫入資料檔標頭 | 日誌序號 (LSN) 記錄 |
| Redo/Log 產生量 | 備份模式期間首次修改寫完整區塊 | 正常日誌量,無額外放大 |
| 控制檔/歷史檔 | 手動備份控制檔 | 自動包含恢復歷史檔 |
| 多工歸檔 | LOG_ARCHIVE_DEST_n / DUPLEX_DEST | MIRRORLOGPATH + USEREXIT |
| 恢復單位 | 資料庫/表空間/資料檔 | 資料庫/表空間/增量 |
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;
}
RESTORE DATABASE; RECOVER DATABASE;聯機備份是企業級資料庫高可用的基石。Oracle 透過表空間備份模式 + 歸檔日誌前滾,實現不一致備份的邏輯一致性恢復;DB2 則以日誌序號與自動歸檔機制達到同樣目標。核心原則相通:保留足夠歸檔日誌、多工寫入防單點、自動化腳本消除人為錯誤、定期恢復演練驗證可用性。現代 Oracle 環境請全面採用 RMAN,將備份管理納入標準化運維體系。