基於單機的DataGuard切換文件

yingyifeng306發表於2021-05-06

 

環境描述

以下環境根據各自環境自行填寫,DG 搭建更多的是資料庫級別的引數設定,所以並不存在AIX LINUX 等作業系統版本之分。

 

生產主機規劃:

主機名

型號

作業系統版本


X86

Centos6.8

 

備庫主機規劃:

主機名

型號

作業系統版本


X86

Centos6.8

 

規劃

目前生產主機IP 規劃:

IP

Alias

備註



本地物理IP( 內網)

 

目前備庫主機IP 規劃:

IP

Alias

備註



本地物理IP( 內網)

 


 

計劃性切換

主備切換測試之switchover

一般 SWITCHOVER 切換都是計劃中的切換 特點是在切換後 不會丟失任何的資料 而且這個過程是可逆的 整個 DATA GUARD 環境不會被破壞 原來 DATA GUARD 環境中的所有 STANDBY 都可以繼續工作。

  在進行DATA GUARD的物理STANDBY切換前需要注意:

1)確認主庫和備庫間網路連線通暢;

2)確認沒有活動的會話連線在資料庫中;

3)PRIMARY資料庫處於開啟的狀態,STANDBY資料庫處於MOUNT/READ ONLY狀態

 

主庫切備庫

以下操作均在生產機進行

檢視切換狀態

SQL> SELECT   DATABASE_ROLE,SWITCHOVER_STATUS FROM V$DATABASE;

DATABASE_ROLE    SWITCHOVER_STATUS

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

PRIMARY          TO STANDBY

 

備註程式碼

:   A:switchover_status 出現 session active/not   allowed

當出現 session active 的時候表示還有活動的 session, 則執行 下面程式碼:

 Alter database commit to switchover to   physical standby with session shutdown;

 

當出現not allowed時,在官方文件說轉換會不成功嘗試執行一下程式碼

B.ORA-01153: an   incompatible media recovery is active 執行下面程式碼:

Alter database   recover managed standby database finish;

或者 Alter database   recover managed standby database finish force;

 

切換成備庫

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

或者

SQL> ALTER   DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

Database altered.

 

重啟資料庫

SQL> SHUTDOWN   IMMEDIATE

SQL> startup   mount;

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

 

 

備庫切主庫

以下操作均在備機進行

檢視switchover狀態

SQL> SELECT   DATABASE_ROLE,SWITCHOVER_STATUS FROM V$DATABASE;

DATABASE_ROLE    SWITCHOVER_STATUS

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

STANDBY          TO PRIMARY

 

備註程式碼:

若不是用此語句切換 :ALTER DATABASE COMMIT TO SWITCHOVER   TO PRIMARY with session shutdown

補充 若出現 :ORA-16139: media recovery required

是因為沒有執行:alter   database recover managed standby database disconnect from session;

 

2. 切換成主庫

SQL> ALTER DATABASE   COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> shutdown   immediate;

SQL> startup;

SQL> alter   system switch logfile;

 

驗證同步

驗證切換成功,在原先的備機上(即現在的生產機上)切換歸檔:

su - oracle

sqlplus "/ as sysdba"

SQL>alter system switch logfile;

SQL>alter system switch logfile;

 

在原生產機,檢查原先的生產庫告警日誌,觀察是否有新的歸檔傳輸過來

$ tail -f   /oracle/app/diag/rdbms/kinton/kinton/trace/alert_kinton.log

 


 

故障切換

主備切換之Failover

FAILOVER 切換一般是 PRIMARY 資料庫發生故障後的切換 這種情況下 STANDBY 資料庫發揮其作用。這種切換髮生後,可能會造成資料的丟失。而且這個過程不是可逆的,DATA GUARD環境會被破壞。

由於PRIMARY資料庫已經無法啟動,所以FAILOVER切換所需的條件並不多,只要檢查STANDBY是否執行在最大保護模式下,如果是的話,需要將其置為最大效能模式,否則切換到PRIMARY角色也無法啟動。

 

生產庫停止歸檔傳輸服務

該操作均在生產庫執行

$export ORACLE_SID=kinton

$sqlplus / as sysdba

確認傳輸服務設在log_archive_dest_state_2 引數上

SQL> alter system set log_archive_dest_state_2=defer   scope=both sid='*';

 

備庫強制Failover 開啟

以下操作均在備庫執行

停止應用歸檔:

   SQL> ALTER   DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

  Database   altered.

 

備庫停止應用歸檔 ­

   SQL> ALTER   DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

SQL> ALTER   DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;

Database altered.

 

確認資料庫角色為STANDBY

確認資料庫保護模式為最大效能模式

   SQL> select   DATABASE_ROLE,PROTECTION_MODE,SWITCHOVER_STATUS from v$database;

   DATABASE_ROLE

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

PHYSICAL STANDBY

若資料庫非最大效能模式,則手動切換成最大效能模式,若是則跳過此步

SQL> alter   database set standby database to maximize performance;

 

執行Failover切換

   SQL> ALTER   DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

 

切換完成之後重啟資料庫

    SQL> shutdown immediate

      SQL> startup

 


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

相關文章