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

Oracle RAC 配置 Data Guard 完整實戰:從環境準備到備庫建立

     編輯:Oracle 資料庫基礎

架構定位

三大高可用技術互補:

  • RAC:保護實例層級可用性(節點故障切換)。
  • RMAN:保護資料層級完整性(備份恢復)。
  • Data Guard:同時保護實例與資料(異地容災、讀寫分離)。

本文實作:兩節點 RAC 主庫(ASM 儲存)建立單實例物理備庫(本地磁碟)。

環境資訊

屬性Primary (RAC)Standby
DB_UNIQUE_NAMEJSsdbJSsstd
IP192.168.10.11 / 192.168.10.12192.168.10.101
版本10.2.0.410.2.0.4
儲存ASM本地磁碟

第一階段:前置準備(雙端同步執行)

  1. 目錄建立:Standby 端 $ORACLE_BASE/admin/JSsstd/ 下建立 adump、bdump、cdump、udump、pfile 等 trace 目錄。
  2. 網路互通:雙端修改 listener.ora、tnsnames.ora,確保 tnsping JSsdb、tnsping JSsstd 雙向成功。關鍵:SERVICE_NAME 需與 DB_UNIQUE_NAME 一致。
  3. 主庫啟用歸檔與 Force Logging:
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE FORCE LOGGING;
    SQL> ALTER DATABASE OPEN;
  4. 記錄主庫關鍵檔案路徑(後續路徑轉換參考):
    SELECT name FROM v$datafile;
    SELECT name FROM v$tempfile;
    SELECT member FROM v$logfile;

第二階段:主庫熱備份與控制檔建立

-- 1. 開啟 RMAN 熱備份
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

-- 2. 建立 Standby 控制檔
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/stby_control.ctl';

-- 3. 建立參數檔(PFILE)供備庫啟動
SQL> CREATE PFILE='/tmp/initJSsstd.ora' FROM SPFILE;

第三階段:傳輸檔案至備庫端

使用 scp 或 rsync 將下列檔案傳至 Standby 對應路徑:

  • 資料檔備份組件(RMAN 產出)
  • stby_control.ctl → $ORACLE_HOME/dbs/
  • initJSsstd.ora → 修改後另存為 $ORACLE_HOME/dbs/initJSsstd.ora
  • 密碼檔 orapwJSsdb → 重命名為 orapwJSsstd

第四階段:備庫端參數檔調整(關鍵轉換參數)

*.db_unique_name=JSsstd
*.log_archive_config='DG_CONFIG=(JSsdb,JSsstd)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=JSsstd'
*.log_archive_dest_2='SERVICE=JSsdb ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=JSsdb'
*.fal_server=JSsdb
*.fal_client=JSsstd
*.standby_file_management=AUTO
*.db_file_name_convert='+ASMDISK1/JSsdb/','/u01/app/oracle/oradata/JSsstd/'
*.log_file_name_convert='+ASMDISK1/JSsdb/','/u01/app/oracle/oradata/JSsstd/'
*.remote_login_passwordfile=EXCLUSIVE

第五階段:備庫啟動與同步驗證

  1. NOMOUNT 階段啟動:
    SQL> STARTUP NOMOUNT PFILE='/u01/app/oracle/dbs/initJSsstd.ora';
  2. 掛載 Standby 控制檔:
    SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
  3. 啟動即時應用(Real-time Apply):
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE 
         USING CURRENT LOGFILE DISCONNECT FROM SESSION;
  4. 驗證同步狀態:
    -- 主庫
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    SQL> SELECT sequence#, applied FROM v$archived_log ORDER BY 1 DESC;
    
    -- 備庫
    SQL> SELECT sequence#, applied FROM v$archived_log ORDER BY 1 DESC;
    -- APPLIED 欄位顯示 YES 表示同步正常

關鍵避坑指南

  • ASM 路徑轉換:db_file_name_convert、log_file_name_convert 必須精確對應 ASM 與檔案系統路徑前綴,否則資料檔/日誌檔無法自動建立。
  • 密碼檔同步:主庫密碼檔必須複製到備庫並改名,否則 SYS 遠端登入失敗導致 FAL (Fetch Archive Log) 機制失效。
  • 防火牆/SELinux:確保 1521 埠雙向通訊,Standby 需允許主庫主動推送歸檔日誌。
  • 備庫唯讀開放:若需報表查詢,啟動 ALTER DATABASE OPEN READ ONLY 並配合 ACTIVE_STANDBY 授權(11g+)。

後續運維檢查清單

  1. 每日檢查 V$ARCHIVE_GAP 確認無缺口。
  2. 監控 V$DATAGUARD_STATS 中 apply lag、transport lag。
  3. 定期演練 Switchover(角色互換)驗證容災有效性。
  4. 備庫磁碟空間預警(歸檔日誌累積風險)。

總結

RAC + Data Guard 是企業級高可用架構的黃金組合。關鍵在於:網路互通為基、參數轉換為核、歸檔同步為命、演練驗證為保。建議將上述步驟封裝為標準化操作手冊(Runbook),納入變更管理流程。

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