Oracle 10g DataGuard物理主備切換-switchover與failover

season0891發表於2017-10-29

10g物理主庫與備庫:

switchover 切換:主庫與備庫資料同步正常情況下的切換,主要用於主備維護、切換演練等;

failover 切換:主庫與備庫在資料未同步情況下的強制切換,主要用於主庫當機、故障情況下切換;

一、switchover 切換

主庫與備庫資料同步,且正常執行,將主庫與備庫的角色互換;

切換前,務必檢查當前主庫與備庫的歸檔是否是同步的,確認同步後再執行切換

switchover 切換主庫操作

第1步、主庫停止監聽
lsnrctl stop



(理論上是不需要停止主庫監聽的,但是實際上如果切換時資料庫繁忙,還有大量會話連線運算元據庫,
在執行切換操作的時候需要等待oracle執行session shutdown,有時會很慢,這裡建議直接停止監聽,停止後,還可以透過查 ps -ef | grep "LOCAL=NO",檢視進行, LOCAL=NO是客戶端連線程式,並kill -9 殺掉這些沒有釋放的連線,再執行下面的切換)

第2步、主庫執行切換
主庫狀態角色確認
select switchover_status from v$database;

查詢結果分兩種情況:

第一種情況
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE

如果查詢結果是SESSIONS ACTIVE: 執行下面的:
SQL> alter database commit to switchover to physical standby with session shutdown;

第二種情況

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO STANDBY

如果查詢結果是:TO STANDBY 執行下面的:
SQL> alter database commit to switchover to physical standby;

第3步、關閉主庫
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.

第4步、主庫啟動到mount狀態
SQL> startup mount
ORACLE instance started.
Total System Global Area 9646899200 bytes
Fixed Size 2087000 bytes
Variable Size 822085544 bytes
Database Buffers 8808038400 bytes
Redo Buffers 14688256 bytes

Database mounted.

 

第5步、 主庫確定切換後的狀態
SQL> select open_mode,database_role,switchover_status from v$database;

OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- -------------------- ------------------------------------
MOUNTED PHYSICAL STANDBY SESSIONS ACTIVE

資料庫角色變成了PHYSICAL STANDBY(物理備庫)
完成了主庫的角色轉換;

第6步、 主庫啟動監聽
lsnrctl start

switchover 切換備庫操作
備庫執行切換為主庫模式
第1步、備庫狀態角色確認
SQL> select switchover_status from v$database;

第一種情況
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY

如果狀態為TO PRIMARY 則執行下面的語句:
SQL> alter database commit to switchover to primary;

 

第二種情況

SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
---------------------------------
SESSIONS ACTIVE

如果狀態是 SESSIONS ACTIVE 則 執行下面的語句:
alter database commit to switchover to primary with session shutdown;


第2步、備庫開啟

alter database open;

 

第3步、備庫狀態角色確認
SQL> select open_mode,database_role,switchover_status from v$database;

OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
---------- ---------------- -------------------- --------------------------------------
READ WRITE PRIMARY SESSIONS ACTIVE


第4步、原主庫啟動同步
在原主庫上執行:
alter database recover managed standby database using current logfile disconnect from session;

switchover 切換完成

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

相關文章