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

Oracle 11g Physical Data Guard 搭建全記錄:基於 RMAN DUPLICATE FOR STANDBY 的完整部署流程

     編輯:Oracle 教學

環境規劃

項目PrimaryStandby
OSCentOS 6.4CentOS 6.4
Oracle11.2.0.1.011.2.0.1.0
IP192.168.121.217192.168.121.218
DB_UNIQUE_NAMEpdunqpdunq_dg
SIDpowerdespowerdes

部署步驟

1. Primary 端準備

  • 啟用歸檔模式 + Force Logging
  • 配置 LOG_ARCHIVE_DEST_2 指向 Standby (LGWR SYNC AFFIRM)
  • 設置 FAL_SERVER/FAL_CLIENT、STANDBY_FILE_MANAGEMENT=AUTO
  • 創建 Standby Controlfile:ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/stdby.ctl';
  • 備份數據文件 + 歸檔 (RMAN BACKUP DATABASE PLUS ARCHIVELOG)
  • 傳輸備份件、Controlfile、參數文件到 Standby 服務器

2. Standby 端環境準備

  • 創建目錄結構 (data, arch, admin, etc.)
  • 配置 listener.ora (SID_LIST 包含 GLOBAL_DBNAME=powerdes_DGMGRL)、tnsnames.ora (Primary/Standby 互訪)
  • 啟動 Listener
  • 創建密碼文件:orapwd file=$ORACLE_HOME/dbs/orapwpowerdes password=syspass entries=10
  • 創建最小 PFILE (含 DB_UNIQUE_NAME=pdunq_dg, FAL_SERVER=pdunq, LOG_ARCHIVE_DEST_1 本地、LOG_ARCHIVE_DEST_2 指向 Primary)
  • 以 NOMOUNT 啟動實例

3. RMAN DUPLICATE FOR STANDBY (核心步驟)

RMAN TARGET sys/pass@pdunq AUXILIARY /
RUN {
  ALLOCATE AUXILIARY CHANNEL C1 DEVICE TYPE DISK;
  ALLOCATE AUXILIARY CHANNEL C2 DEVICE TYPE DISK;
  DUPLICATE TARGET DATABASE FOR STANDBY
    NOFILENAMECHECK
    DORECOVER;
  RELEASE CHANNEL C1;
  RELEASE CHANNEL C2;
}

關鍵點:

  • FOR STANDBY — 創建備庫控制文件,自動設置 Standby 模式
  • NOFILENAMECHECK — 目標/輔助實例文件路徑相同或已在 PFILE 中 SET NEWNAME 映射
  • DORECOVER — 復制後自動應用歸檔至一致點

4. Standby 端後續配置

  • 修改參數文件 (轉換為 SPFILE):
    DB_UNIQUE_NAME=pdunq_dg, FAL_CLIENT=pdunq_dg, FAL_SERVER=pdunq, LOG_ARCHIVE_CONFIG='DG_CONFIG=(pdunq,pdunq_dg)', LOG_ARCHIVE_DEST_1 本地, LOG_ARCHIVE_DEST_2 指向 Primary
  • 啟動 Redo Apply:
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

5. 驗證與故障排查

-- Primary 切換日志
ALTER SYSTEM SWITCH LOGFILE;

-- 雙端查詢最大序號
SELECT MAX(sequence#) FROM v$archived_log;

-- Standby 查看 Alert 日志關鍵字
MRP0 started
Managed standby recovery
Waiting for all non-current ORLs to be archived...
Media Recovery Waiting for thread 1 sequence 303

常見問題:歸檔不傳遞 → 檢查 LOG_ARCHIVE_DEST_2 的 SERVICE= TNS 名稱與 DB_UNIQUE_NAME 是否與 Standby 一致 → 修正後 ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; ALTER SYSTEM SWITCH LOGFILE;

6. 開啟 Real-Time Apply (可選,推薦)

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

關鍵參數對照表

參數PrimaryStandby
DB_UNIQUE_NAMEpdunqpdunq_dg
LOG_ARCHIVE_DEST_1LOCATION=... VALID_FOR=(ALL_LOGFILES,ALL_ROLES)LOCATION=... VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
LOG_ARCHIVE_DEST_2SERVICE=pdunq_dg LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq_dgSERVICE=pdunq LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq
FAL_SERVERpdunq_dgpdunq
FAL_CLIENTpdunqpdunq_dg
STANDBY_FILE_MANAGEMENTAUTOAUTO

總結

基於 RMAN DUPLICATE FOR STANDBY 是 11g 部署 Physical Data Guard **最標準、最自動化、最不易出錯** 的方式。關鍵成功因素:
1. Primary 端歸檔/Force Logging/網絡互通準備就緒
2. Standby 端目錄/Listener/Password/Pfile 完全就緒
3. RMAN 腳本參數精準 (NOFILENAMECHECK + DORECOVER)
4. 部署後**必做** ALTER SYSTEM SWITCH LOGFILE 雙端序號對賬
5. 納入監控:V$ARCHIVE_GAP, V$DATAGUARD_STATS, V$MANAGED_STANDBY

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