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

Oracle ARCHIVELOG 模式線上熱備份完整操作指南:原理、步驟與最佳實務

     編輯:Oracle 資料庫基礎

生產環境**不能停機**是常態。Oracle ARCHIVELOG 模式下的**線上熱備份 (Online Backup)**,允許資料庫在開放服務狀態下完成備份,是 7×24 系統的核心生存技能。本文系統梳理熱備份原理、標準操作流程、關鍵參數配置與避坑指南。

冷備份 vs 熱備份:核心差異

維度冷備份 (Offline)熱備份 (Online, ARCHIVELOG)
資料庫狀態SHUTDOWNOPEN (正常服務)
備份單位整個資料庫表空間級別 (部分或全部)
備份檔案所有資料檔、控制檔、參數檔資料檔 + 控制檔 (Redo Log 不備份,靠歸檔)
一致性保證SCN 完全一致透過 BEGIN/END BACKUP 機制 + 歸檔日誌達成時間點一致性

熱備份核心原理:分塊鎖定與完整映像日誌

  1. ALTER TABLESPACE ts BEGIN BACKUP → 該表空間所有資料檔頭記錄 **Checkpoint SCN** (凍結 SCN),後續不再更新檔頭 SCN。
  2. 備份期間,該表空間資料塊**首次被修改**時,LGWR 會將**整個塊映像 (Full Block Image)** 寫入 Redo Log (而非僅寫變更向量),導致 Redo 產生量暴增。
  3. 備份完成後 ALTER TABLESPACE ts END BACKUP → 資料檔頭再次記錄最新 Checkpoint SCN,恢復正常 Redo 記錄模式。
  4. 恢復時:從備份檔還原 → 套用 BEGIN/END BACKUP 間的所有 Archived Redo Log → 前滾至 END BACKUP SCN → 開放資料庫。

標準熱備份操作流程 (SOP)

Phase 0:環境準備 (一次性)

-- init.ora / spfile 關鍵參數
LOG_ARCHIVE_START = TRUE           -- 10g+ 建議用 LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_DEST_1 = 'LOCATION=/u01/arch MANDATORY'
LOG_ARCHIVE_FORMAT = 'arch_%t_%s_%r.arc'
LOG_ARCHIVE_DUPLEX_DEST = '/u02/arch'  -- 多路複寫歸檔,消除單點
LOG_ARCHIVE_DEST_STATE_1 = ENABLE
  1. SHUTDOWN IMMEDIATE → STARTUP MOUNT
  2. ALTER DATABASE ARCHIVELOG;
  3. ALTER DATABASE OPEN;
  4. ARCHIVE LOG LIST; 驗證歸檔模式生效
  5. 備份新產生的歸檔日誌 (冷備份基線)

Phase 1:執行熱備份 (例:備份 USERS 表空間)


-- 1. 進入備份模式 (盡量縮短此窗口)
ALTER TABLESPACE users BEGIN BACKUP;

-- 2. OS 層複製資料檔 (cp / rsync / 第三方備份軟體)
--    注意:此期間業務可正常讀寫,但會產生大量 Redo
! cp /u01/oradata/ORCL/users01.dbf /backup/ORCL/users01.dbf

-- 3. 結束備份模式
ALTER TABLESPACE users END BACKUP;

-- 4. 強制歸檔當前線上日誌 (確保備份窗口內的 Redo 皆已歸檔)
ALTER SYSTEM ARCHIVE LOG CURRENT;

-- 5. 備份控制檔 (結構變更後必備)
ALTER DATABASE BACKUP CONTROLFILE TO '/backup/ORCL/control01.ctl' REUSE;
-- 或二進制備份
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/backup/ORCL/control_trace.sql';

Phase 2:多表空間循環備份腳本範例 (Shell)


#!/bin/bash
# hot_backup.sh
ORACLE_SID=ORCL; export ORACLE_SID
BACKUP_DIR=/backup/ORCL/$(date +%Y%m%d)
mkdir -p $BACKUP_DIR

sqlplus -s / as sysdba <

關鍵風險控制與最佳實務

風險點影響緩解措施
BEGIN BACKUP 窗口過長Redo 爆增、效能下降、備份檔不一致風險使用 RMAN (不需 BEGIN/END BACKUP)、或分表空間並行備份、非尖峰時段執行
備份期間資料檔損壞無法恢復多路複寫歸檔 (LOG_ARCHIVE_DUPLEX_DEST)、備份檔校驗 (DBVERIFY/RMAN VALIDATE)
遺漏 SYSTEM/UNDO 表空間資料庫無法開啟腳本強制包含 SYSTEM、SYSAUX、UNDO、TEMP (TEMP 僅備份結構)
控制檔未同步備份結構變更 (加表空間等) 導致恢復失敗每次熱備份結束必備份控制檔,或啟用控制檔自動備份 (RMAN CONFIGURE CONTROLFILE AUTOBACKUP ON)

RMAN:現代熱備份的標準答案

**強烈建議棄用手工腳本,全面轉向 RMAN:**

  • 無需 BEGIN/END BACKUP,不產生完整塊映像,Redo 壓力極低
  • 支援增量備份、區塊變更追蹤 (BCT)、壓縮、加密、並行化
  • 內建目錄 (Catalog) 管理備份元資料,支援 RESTORE ... PREVIEW、VALIDATE
  • 一鍵恢復:RUN { RESTORE DATABASE; RECOVER DATABASE; }

# RMAN 典型熱備份腳本
RUN {
  CONFIGURE CONTROLFILE AUTOBACKUP ON;
  BACKUP AS COMPRESSED BACKUPSET 
    DATABASE PLUS ARCHIVELOG 
    TAG 'DAILY_HOT_BACKUP';
  DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 7 DAYS;
}

DB2 UDB 線上備份對比 (補充知識)

DB2 採用 **Log Retain (歸檔日誌) + 線上備份** 機制,概念類似:

  • 活動日誌 → 線上歸檔日誌 → 離線歸檔日誌 (移至他目錄/帶庫)
  • 關鍵參數:LOGFILSIZ, LOGPRIMARY, LOGSECOND, NEWLOGPATH, MIRRORLOGPATH, USEREXIT
  • 備份命令:BACKUP DATABASE dbname ONLINE TO /backup INCLUDE LOGS
  • 恢復歷史檔 (RHF) 自動記錄每次備份/恢復/Load/Reorg 元資料,支援時間點恢復。

掌握 ARCHIVELOG 熱備份原理與 RMAN 實戰,是 DBA 守護資料資產的核心竞争力。記住:**備份未驗證等於沒備份**,定期演練恢復演練 (Fire Drill) 才是真正的保障。

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