DataGuard切換(主庫為Rac+備庫為Rac)

yy418408247發表於2016-06-23
前段時間做了一次主備庫的切換,大體寫下操作步驟和記錄,分享下。

環境: 
        db version:11.2.0.3

        主庫:兩節點的RAC
        備庫:兩節點的RAC
       是異地災備,網路質量不太好。
步驟:
1.檢查日誌應用情況
standby database(備庫檢查):
SQL> select thread#,SEQUENCE#,FIRST_TIME,next_time,applied from gv$archived_log order by sequence#;(確定日誌都已經應用

2.檢查日誌傳輸錯誤
SQL> SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;


STATUS  GAP_STATUS
--------- ------------------------
VALID  NO GAP

3.評估切換時間   --rac環境下備庫只有一個例項可以為open狀態。
 set linesize 200
SQL> column name format a22
SQL> column value format a16
SQL> column unit format a28
SQL> column time_computed format a25
SQL>  select * from v$dataguard_stats;
NAME       VALUE UNIT     TIME_COMPUTED       DATUM_TIME
---------------------- ---------------- ---------------------------- ------------------------- ------------------------------
transport lag       +00 01:47:32 day(2) to second(0) interval 10/29/2014 10:48:15       10/29/2014 10:47:58
apply lag       +00 01:47:32 day(2) to second(0) interval 10/29/2014 10:48:15       10/29/2014 10:47:58
apply finish time day(2) to second(3) interval 10/29/2014 10:48:15
estimated startup time 20 second     10/29/2014 10:48:15

4.由於主備庫都是rac ,此環境下主庫和備庫都只有一個例項存活
 srvctl stop instance -d EM -i EM2  --先停止主庫
srvctl stop instance -d EM_SH -i EMP2 --停止備庫

NOTE:如果主庫兩個例項都存活會報錯如下:

SQL> alter database commit to switchover to physical standby with session shutdown;
alter database commit to switchover to physical standby with session shutdown
*
ERROR at line 1:
ORA-01105: mount is incompatible with mounts by other instances

5.登入主庫操作
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;  --確保狀態為SESSION_ACTIVE 或者TO STANDBY(由於是異地可能在shut一個例項後,redo應用會有延遲,如果網路質量不太好,可等一等)

alter database commit to switchover to physical standby with session shutdown;--執行切換(最好把應用停掉) --執行完此操作後,資料庫會自動shut

 STARTUP MOUNT;--啟動原來主庫到mount

6.登入備庫操作
SELECT SWITCHOVER_STATUS FROM V$DATABASE; --確保狀態會SESSION_ACTIVE或者TO PRIMARY.

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; --執行角色切換

ALTER DATABASE OPEN;--開啟新主庫 

srvctl start instance -d databasename -i instance_name --啟動另外的節點

7.登入新的備庫
ALTER DATABASE OPEN; --啟動庫

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; --啟動實時應用

srvctl start instance -d databasename -i instance_name; --啟動其他例項

8.進行事務,發現並沒有同步過來
archive log list 發現scn都沒有

經過核查是因為主庫並沒有日誌傳輸
 alter system set log_archive_dest_state_2='enable' sid='*'; --在新的主庫執行,啟動日誌傳輸服務
有可能查詢資料的狀態為:
 SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
FAILED DESTINATION 

檢視備庫的scn沒有變化,可重啟下備庫。


9.檢查是否同步
SELECT MAX(SEQUENCE#),THREAD# FROM V$ARCHIVED_LOG 
WHERE RESETLOGS_CHANGE# = (SELECT MAX(RESETLOGS_CHANGE#) FROM V$ARCHIVED_LOG)  GROUP BY THREAD#;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29494175/viewspace-2120791/,如需轉載,請註明出處,否則將追究法律責任。

相關文章