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

Oracle 11g 物理備用資料庫「即時克隆」完整實作指南

     編輯:Oracle 資料庫基礎

前言:Oracle 11g 資料衛士架構的重大突破

相較於 Oracle 8i 與 9i 版本,Oracle 11g 在資料庫備份與高可用性架構(MAA)方面實現了質的飛躍。作為真正應用叢集(RAC)特性的核心組件,Oracle 11g 透過恢復管理器(RMAN)的 DUPLICATE DATABASE 命令,支援直接從主資料庫透過網路克隆備用資料庫,只要目標資料庫處於活動狀態即可。這項「即時克隆」特性徹底消除了傳統流程中必須先生成備份集、再傳輸、最後在備用端手動還原恢復的繁瑣步驟。RMAN 會在主站點自動於記憶體中生成轉換腳本,然後在備用站點執行克隆操作,全程無需 DBA 人工干預,大幅降低了部署複雜度與人為錯誤風險。

實驗環境架構

本文實作環境採用虛擬化架構:雙核 AMD Athlon 64 位元 CPU、4GB 記憶體、宿主機運行 Windows XP,透過 VMware Server 1.0.8 建立兩台虛擬機,各分配 1 個 vCPU 與 1200MB 記憶體,客戶端作業系統為 Oracle Enterprise Linux (OEL) 4.5.1(核心 2.6.9-55.ELsmp)。兩節點分別命名為 training(主庫)與 11gStdby(備庫),經 /etc/hosts 設定互通後,各自安裝 Oracle 11g R1 並建立標準種子資料庫(SID: orcl)。

階段一:主資料庫前置調整

1. 強制開啟日誌記錄模式

為確保零資料遺失,必須先啟用 FORCE LOGGING,再切換至 ARCHIVELOG 模式。預設的 NOFORCE LOGGING 允許 NOLOGGING 操作導致變更未記錄,違背 Data Guard 保護承諾。

ALTER SYSTEM SET log_archive_format = 'log_%s_%t_%r.arc' SCOPE=SPFILE;
ALTER SYSTEM SET db_unique_name = 'orcl' SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE FORCE LOGGING;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

2. 建立備用重做日誌群組

自 9i R2 引入 Standby Redo Log(SRL)以来,Oracle 強烈建議配置以支援即時應用與重做串聯。11g 新特性:若主庫已建立 SRL,DUPLICATE 會自動在備庫同步建立。本例每組配置多個成員防單點故障:

ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/Oracle/oradata/orcl/srl01.log' SIZE 50M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/Oracle/oradata/orcl/srl02.log' SIZE 50M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/Oracle/oradata/orcl/srl03.log' SIZE 50M REUSE;

3. 檔案名稱轉換參數

主備路徑不同時需設定 DB_FILE_NAME_CONVERT 與 LOG_FILE_NAME_CONVERT,確保 RMAN 能正確映射資料檔與日誌檔路徑。

4. 關鍵初始化參數配置

以下參數確保 DUPLICATE 能自動配置備庫環境:

  • DB_UNIQUE_NAME:唯一識別主庫,靜態參數需重啟生效
  • LOG_ARCHIVE_CONFIG:定義 DG_CONFIG 列出所有資料庫 DB_UNIQUE_NAME
  • STANDBY_FILE_MANAGEMENT=AUTO:主庫檔案操作自動同步至備庫
  • LOG_ARCHIVE_DEST_1:本地歸檔目的地(採用快速回復區)
  • LOG_ARCHIVE_DEST_2:遠端傳輸至備庫服務 stdby,採 ASYNC 模式與 VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u01/app/Oracle/Flash_recovery_area/ORCL/ DB_UNIQUE_NAME=orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES)';
ALTER SYSTEM SET log_archive_dest_state_1 = 'ENABLE';
ALTER SYSTEM SET log_archive_dest_2 = 'SERVICE=stdby ASYNC DB_UNIQUE_NAME=stdby VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)';
ALTER SYSTEM SET log_archive_dest_state_2 = 'ENABLE';
ALTER SYSTEM SET standby_file_management = 'AUTO';
ALTER SYSTEM SET log_archive_config = 'DG_CONFIG=(orcl,stdby)';

5. 網路互通配置

主庫 tnsnames.ora 新增備庫條目;備庫 listener.ora 註冊靜態監聽 SID_LIST_LISTENER,確保 RMAN auxiliary 連線可在 NOMOUNT 階段建立。

階段二:備用站點預備

  1. 建立目錄結構:控制檔、資料檔、線上/備用重做日誌、稽核追蹤目錄
  2. 密碼檔同步:使用 orapwd 建立或從主庫複製,確保 SYS 密碼一致
  3. 最小化 PFILE:僅含 DB_NAME=stdby,啟動至 NOMOUNT 狀態等待 RMAN 接管
export ORACLE_SID=stdby
sqlplus / as sysdba
SQL> startup nomount pfile='/home/oracle/init_stdby.ora';

階段三:執行 RMAN 即時克隆

在主庫啟動 RMAN,以 target / 連主庫、auxiliary sys@stdby 連備庫。配置 2 個 target 與 2 個 auxiliary 通道加速。核心命令結構:

RUN {
  ALLOCATE CHANNEL d1 TYPE DISK;
  ALLOCATE CHANNEL d2 TYPE DISK;
  ALLOCATE AUXILIARY CHANNEL cnv1 TYPE DISK;
  ALLOCATE AUXILIARY CHANNEL cnv2 TYPE DISK;
  DUPLICATE TARGET DATABASE
    FOR STANDBY
    FROM ACTIVE DATABASE
    DORECOVER
    SPFILE
      SET db_unique_name='stdby'
      SET control_files='/u01/app/Oracle/oradata/orcl/control01.ctl'
      SET log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/Oracle/oradata/stdby/'
      SET log_archive_dest_1='location=/u01/app/Oracle/Flash_recovery_area/STDBY/ valid_for=(ALL_LOGFILES,ALL_ROLES) db_unique_name=stdby'
      SET log_archive_dest_2='service=orcl ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=orcl'
      SET fal_client='stdby'
      SET fal_server='orcl'
      SET standby_file_management='AUTO'
      SET log_archive_config='dg_config=(orcl,stdby)'
    NOFILENAMECHECK;
}

克隆內部流程解析

  1. 以主庫參數檔為藍本建立備庫 SPFILE,套用 SET 子句修改
  2. 關閉備庫實例,用新 SPFILE 啟動至 NOMOUNT
  3. 備份主庫控制檔為 FOR STANDBY 類型,修正檔名後複製至備庫,MOUNT STANDBY DATABASE
  4. 直接在備庫建立資料檔鏡像副本(image copy)
  5. 套用當前歸檔重做日誌完成恢復,進入管理恢復模式

階段四:驗證與後續維護

克隆完成後,在主庫執行 ALTER SYSTEM ARCHIVE LOG CURRENT; 強制日誌切換。觀察備庫告警日誌出現 RFS[2]: Successfully opened standby log 4 等記錄,確認重做傳輸與應用正常。此時物理備用資料庫已就緒,可支援即時查詢、快照備份等進階用途。

原文出處: Oracle 11g Data Guard: Building a Physical Standby Database by Jim Czuprynski

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