基于Oracle 12.1版本RAC+ADG環境,進行switchover切換演練。
switchover與failover區別
- switchover
switchover是有計劃的進行數據庫身份切換,不會破壞數據庫,也不會有數據丟失。可以在容災演練、停機維護場景中使用。- failover
failover是非計劃的進行數據庫身份切換,會破壞數據庫,也可能會丟失數據。可以在緊急情況下使用,切換后需要重做DG。
Table of Contents
1、切換前準備
前臺業務停止運行,關閉與該數據庫相關的所有應用服務。
2、檢查DG同步情況
在備庫執行下面的sql,查看主備是否有延遲。
col name for a30;
col value for a20;
col datum_time for a20;
select name,value,datum_time from v$dataguard_stats where name in ('transport lag','apply lag');
在備庫執行下面的sql,查看歸檔日志有沒有被被應用。
set lines 200
select
thread#,
sequence#,
first_time,next_time,applied from v$archived_log where applied='NO';
3、主庫切換至備庫
3.1、關閉主庫(RAC)第二節點數據庫
Oracle數據庫的主備切換只能在一個實例上進行,所以對于Oracle RAC,需要關閉一個實例,選擇RAC的第二節點上實例進行關閉。
關閉命令:shutdown immediate
3.2、主庫切換至備庫
切換前先執行下面的命令檢查主庫情況。
col name for a15;
col open_mode for a20;
col protection_mode for a20;
col database_role for a20;
col switchover_status for a20;
set lines 200;
select name,open_mode,protection_mode,database_role,switchover_status from v$database;
這里分兩種情況:
- switchover_status輸出是TO STANDBY,在RAC剩余的單節點上執行下面這條切換命令:
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
- switchover_status輸出是ACTIVE SESSION,在RAC剩余的單節點上執行下面這條切換命令:
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
3.3、啟動數據庫
主庫切換至備庫后,當前數據庫會自動關閉,需手動啟動。同時,將3.1步驟關閉的RAC第二節點的實例,也啟動起來。
啟動數據庫命令:startup
4、備庫切換至主庫
4.1、取消備庫MRP進程
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
4.2、備庫切換至主庫
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
備庫切換至主庫后,此時數據庫(原備庫)是MOUNTED狀態,需要打開。
ALTER DATABASE OPEN;
5、啟動MRP進程
在RAC(原主庫)中第一節點的實例上啟動MRP進程。
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
6、測試
此時數據庫身份已經切換完畢,可以通知業務工程師連接新主庫進行測試驗證。也可以自己在新主庫插入幾條數據看數據是否正常同步。
7、回切
測試無誤后,可以將數據庫身份進行回切。
7.1、新主庫切換回備庫
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
切回備庫后,數據庫會關閉,此時需要手工啟動。啟動命令:startup。
7.2、新備庫(RAC)取消MRP進程,并關閉其第二節點數據庫
取消MRP進程操作只在新備庫(RAC)中的第一節點上執行即可。
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
在取消MRP進程操作完成后,關閉新備庫第二節點實例,關閉命令:shutdown immediate。
7.3、將新備庫(RAC)切換回主庫,并打開、啟動數據庫
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
在新備庫(RAC)第一節點完成切換回主庫的操作后,第一節點的數據庫會處于MOUNTED狀態。所以此時需要手動打開第一節點數據庫,并且啟動第二節點的數據庫。
7.4、在備庫啟動MRP進程
此時數據庫身份回切已完成,需要在當前備庫上啟動MRP進程。
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
7.5、回切結束
此時,數據庫身份回切結束,可以通知業務工程人員進行驗證。驗證無誤后,Oracle RAC+ADG switchover 切換演練結束。




