Oracle dataguard 正常切換和應急切換
oracle dataguard提供異地容災方案,能有效的防止單點故障和提供高可用技術,這裡介紹dataguard正常主備切換和應急切換(應急切換模拟主庫出現問題無法還原,備庫脫離dataguard接管主庫對外提供服務)
1)Oracle dataguard環境搭建
續上節環境: pridb 172.25.56.149
stydb 172.25.56.150
2)正常主備切換(switchover)
主庫pridb:
select switchover_status from v$database;(查詢目前狀态)
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
alter database commit to switchover to physical standby with session shutdown;(切換至standby模式)
重新啟動資料庫至mount狀态;
shutdown immediate
startup mount
select switchover_status from v$database;(再檢查狀态)
TO PRIMARY
alter database recover managed standby databasedisconnect;(開啟standby應用恢複模式)
檢查狀态
select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
---------- ----------------
MOUNTED PHYSICAL STANDBY
備庫stydb:
select switchover_status from v$database;
alter database commit to switchover to primary;
重新啟動資料庫open
startup
OPEN PRIMARY
至此原主庫切換至備庫,原備庫切換至主庫了
同步測試:
pridb(new):
select sequence#,applied from v$archived_log;
stydb(new):
PS:圖檔偷懶了,不過測試原理是一樣的,隻需要保證2邊sequence序列号一緻且最新的app傳回YES了,就說明備庫接收到應用且恢複了。
3)應急切換
(注:模拟主庫由于故障無法正常switchover,需要執行failover,強制備庫->pridb并接管業務)
1.備庫:
由于是failover,是以了解主庫這時候已經無法正常使用,隻需備庫切換至pridb
停止應用恢複模式
alter database recover managed standby database finish;
轉換standbydb為primary db
重新開機資料庫,恢複正常業務
OPEN_MODE DATABASE_ROLE
OPEN PRIMARY
PS:failover将破壞dataguard模式,需要重新配置dataguard,聽說可以不用重新配置,不過本人未實驗成功,有方法的可以大家一起溝通下.