基於rac到rac dataguard得切換和故障轉移

1、切換(swithover)和故障轉移(failover)區別

  • 1、切換適用於主備工做狀態良好。主庫變動狀態爲備庫,備庫變動狀態爲主庫。node

  • 2、故障轉移,適用於主庫故障、崩潰,不可修復,讓備庫變動狀態,接替主庫角色。sql

2、swithover步驟

2.一、切換前準備
數據庫


一、檢查主庫上是否存在standby redo logfile服務器

select group#,member,type from v$logfile where type='STANDBY';session

image.png


2、在物理standby數據庫上檢查當standby端切換爲主庫時,是否能傳遞redo數據到新的standby數據庫oracle


image.png

tnsping orcl  10 app

image.png

3、在主庫上測試到備機得tnsnames是否聯通ide

image.png


四、在swithover前檢查物理standby數據庫上是否有臨時表空間的設置性能

image.png

五、檢查主庫和物理standby數據庫是否有離線的數據文件測試

image.png

六、肯定主庫和物理備份庫的最大歸檔日誌序列號是否匹配


在主庫上查詢每個實例的最大歸檔序列號

image.png

在備庫上查詢每個備庫的最大歸檔序列號

select thread#,max(sequence#) from v$archived_log where applied='YES' group by thread#;

image.png

七、檢查物理standby 上的MRP 進程是否處於運行狀態

image.png

八、確保數據庫無job運行,同時禁止rmanexp或者expdp備份

image.png


若是有考慮禁止job運行,並kill掉。方法以下:

declare

begin

    DBMS_JOB.BROKEN(27,true);

end;

kill會話信息

根據sid查詢出session信息

select SID,SERIAL# from V$Session where SID='9'; 

alter system kill session '9,43767'; 

九、設置JOB_QUEUE_PROCESSES =0 

image.png

十、在rac環境中關閉一個數據庫實例

oracle@snode1:~> srvctl stop instance -d srac -n snode2

oracle@snode1:~> srvctl status instance -d srac -i srac1,srac2

Instance srac1 is running on node snode1

Instance srac2 is not running on node snode2


十一、備庫中止redo應用,而且確保standby數據庫處於掛載狀態

image.png


srvctl stop database -d trac -o immediate;

srvctl start database -d trac -o mount;

image.png


12、建議給主庫和物理standby庫作個全備份


2.三、用sqlplus執行切換過程

一、在主庫上執行以下命令查詢主庫狀態是否爲TO STANDBY 或者SESSION ACTIVE

SQL> select switchover_status,open_mode,database_role from v$database;

image.png


二、在主庫上執行以下swithover命令。


SQL>alter database commit to switchover to physical standby with session shutdown;


三、在standby節點上運行switchover命令 

SQL>  select name,open_mode,database_role,protection_mode from gv$database;

 

NAME       OPEN_MODE           DATABASE_ROLE    PROTECTION_MODE

--------- -------------------- ---------------- --------------------

SRAC        MOUNTED        PHYSICAL STANDBY MAXIMUM PERFORMANCE

SRAC        MOUNTED        PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN

*

ERROR at line 1:

ORA-16139: media recovery required

 

SQL> ALTER  DATABASE RECOVER MANAGED STANDBY  DATABASE DISCONNECT FROM SESSION;

 

Database altered.

 

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

 

Database altered.

image.png

4、在新主庫節點上從新啓動rac read write 狀態

srvctl stop database -d torcl -o immediate;

srvctl start database -d torcl -o open;

SQL>select db_unique_name,database_role,open_mode from v$database;

image.png


五、在新備庫(原主庫)節點上重啓數據庫並應用redo log

srvctl stop database -d orcl -o immediate;

srvctl start database -d orcl -o open;

alter database recover managed standby database using current logfile disconnect from session;


3、failover步驟

3.一、failover 簡介

  一、failover主要用於主庫因爲服務器層或存儲層產生的問題致使primary  database變的不可訪問。

二、對於faileover的考慮

  • standby數據庫的硬件性能要知足生產環境。

  • 確保全部可用的redo被應用到standby數據庫。

  • faileover後new primary database處於最大性能保護模式。而無論以前數據庫的保護模式最大保護或者最大性能。

3.二、failover切換

1、若是主庫崩潰後可以啓動主庫到mount狀態,則執行以下命令

alter system flush redo to 'db_unique_name'; 

 注意須要給standby 數據庫的db_unique_name加單引號。

例如,假設備庫的db_unique_name爲dg2 則在主庫執行以下命令

生產環境命令爲在主庫執行以下命令:alter system flush redo to ‘torcl’;

image.png



2、檢測主庫和standby數據庫的狀態,在主庫上檢測生成的最大歸檔日誌文件

在主庫檢測生成的最大歸檔日誌文件

Select thread# max(sequence#) from v$archived_log group by thread#;


image.png


在備庫檢測已經應用的最大歸檔日誌文件

select max(sequence#) from v$archived_log where applied='YES' group by thread#;

以下圖

image.png

select  REGISTRAR,sequence#,applied from v$archived_log order by sequence#;

image.png

3、在備庫處理未傳遞和應用的歸檔

說明

若是備庫查詢到的已經應用的最大日誌序列號和主庫有差異,則須要從主庫手動拷貝歸檔到備庫,並在備庫上註冊和應用歸檔。

若是無差異,則無需執行這一步驟

ALTER DATABASE REGISTER LOGFILE  '/physical_standby1/thread1_dest/arcr_1_7.arc';

Alter  database recover managed standby database disconnect from sessions;

若是主庫的歸檔已經傳遞到了備庫,可是沒有應用,則手動應用。

若是主庫徹底不可用,則備庫須要恢復,恢復前須要在備庫上應用全部已經傳遞過來的歸檔

 

四、在standby庫即備庫上中止redo應用

說明

Force 關鍵字用於當即終止RFS進程傳遞

FINISH 關鍵子用於failover和恢復當前standby redo logfile

SQL> alter database recover managed standby database cancel;


image.png

alter database recover managed standby database finish force;

select thread#,sequence#,process,status,client_process from v$managed_standby

image.png


image.png


在物理standby上執行以下命令使備庫變動主庫。

SQL>alter database commit to switchover to primary with session shutdown;


image.png

image.png


六、查詢轉換後的數據庫狀態

select db_unique_name,database_role,standby_became_primary_scn from v$database;

image.png


image.png


7、重啓standby新數據庫到 read write狀態。

srvctl stop database -d torcl -o immediate;

srvctl start database -d torcl -o open;

相關文章
相關標籤/搜索