首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 11gR2 物理備用資料庫搭建與主備切換實戰

     編輯:Oracle 資料庫相關知識

環境規劃

項目主庫備庫
DB_UNIQUE_NAMEPRIMSTBY
SIDORCLSTBY
ORACLE_HOME/oracle/product/11.2.0/db_1同
資料檔路徑/oradata/orcl//oradata/stby/

步驟 1:主庫啟用強制歸檔與備份模式

ALTER DATABASE FORCE LOGGING;
-- 檢查歸檔狀態
ARCHIVE LOG LIST;
-- 若非歸檔模式
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ARCHIVE LOG LIST;

步驟 2:建立 Standby Redo Log(主庫同步建立,備庫同步同步)

ALTER DATABASE ADD STANDBY LOGFILE
GROUP 4 ('/oradata/orcl/standby_redo04a.log','/oradata/orcl/standby_redo04b.log') SIZE 50M,
GROUP 5 ('/oradata/orcl/standby_redo05a.log','/oradata/orcl/standby_redo05b.log') SIZE 50M,
GROUP 6 ('/oradata/orcl/standby_redo06a.log','/oradata/orcl/standby_redo06b.log') SIZE 50M,
GROUP 7 ('/oradata/orcl/standby_redo07a.log','/oradata/orcl/standby_redo07b.log') SIZE 50M;

步驟 3:主庫建立密碼檔並複製至備庫

ORAPWD FILE=$ORACLE_HOME/dbs/orapwprim PASSWORD=oracle ENTRIES=10 FORCE=Y IGNORECASE=Y
SCP $ORACLE_HOME/dbs/orapwprim STBY:$ORACLE_HOME/dbs/orapwstby

步驟 4:主庫 PFILE 關鍵參數

*.DB_UNIQUE_NAME=PRIM
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STBY)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/oradata/arch/prim VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIM'
*.LOG_ARCHIVE_DEST_2='SERVICE=STBY VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STBY'
*.FAL_CLIENT=PRIM
*.FAL_SERVER=STBY
*.STANDBY_FILE_MANAGEMENT=AUTO

步驟 5:備庫 PFILE 關鍵參數(檔名轉換參數關鍵)

*.DB_UNIQUE_NAME=STBY
*.DB_FILE_NAME_CONVERT='/oradata/orcl','/oradata/stby'
*.LOG_FILE_NAME_CONVERT='/oradata/orcl','/oradata/stby'
*.LOG_ARCHIVE_DEST_1='LOCATION=/oradata/arch/stby VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STBY'
*.LOG_ARCHIVE_DEST_2='SERVICE=PRIM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRIM'
*.FAL_CLIENT=STBY
*.FAL_SERVER=PRIM
*.STANDBY_FILE_MANAGEMENT=AUTO

步驟 6:RMAN 從主庫備份並恢復至備庫

-- 主庫
RMAN TARGET /
BACKUP DATABASE FORMAT '/u01/oradata/dbfull_%U';
-- 建立 Standby Controlfile
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/oradata/stby/stbycontrol.ctl';
-- 複製控制檔至備庫雙路徑

-- 備庫
STARTUP NOMOUNT PFILE='/home/oracle/initstby.ora'
RMAN TARGET /
RESTORE DATABASE;
-- 若檔名轉換參數正確,資料檔自動落在 /oradata/stby/

步驟 7:啟動主庫、配置 TNS、啟動 Redo Apply

-- 主庫
STARTUP PFILE='/home/oracle/initprim.ora'

-- 雙方 TNSNAMES.ORA 配置 PRIM/STBY 服務名

-- 備庫啟動 Redo Apply(後台脫離 Session)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

步驟 8:驗證同步

-- 主庫
SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG;
ALTER SYSTEM SWITCH LOGFILE;  -- 切兩次

-- 備庫
SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY 1;
-- APPLIED=YES 表示同步正常

主備切換標準流程

  1. 主庫確認 SELECT SWITCHOVER_STATUS FROM V$DATABASE; 返回 TO STANDBY
  2. 主庫執行 ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
  3. 主庫 SHUTDOWN IMMEDIATE; STARTUP MOUNT;
  4. 備庫確認 SWITCHOVER_STATUS = TO PRIMARY
  5. 備庫執行 ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
  6. 備庫開啟:
    • 未開唯讀:ALTER DATABASE OPEN;
    • 已開唯讀:SHUTDOWN IMMEDIATE; STARTUP;
  7. 新備庫重啟 Redo Apply:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
  8. 新主庫 ALTER SYSTEM SWITCH LOGFILE; 觸發首次日誌傳輸

故障切換關鍵指令

-- 有缺失歸檔時,備庫手工註冊
ALTER DATABASE REGISTER PHYSICAL LOGFILE '檔案路徑';

-- 強制完成故障切換(終止 RFS 進程,不等網路超時)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved