1. 程式人生 > 其它 >Oracle DG主備切換至單例項

Oracle DG主備切換至單例項

主備切換方式:

1. switch:使用者主動切換;
2. failover:主庫出現故障,強行切換;
switch 切換過程:先主庫再備庫

switchover_status值詳解:

NOT ALLOWED 當前的資料庫不是帶有備用資料庫的主資料庫
PREPARING DICTIONARY 該邏輯備用資料庫正在向一個主資料庫和其他備用資料庫傳送它的重做資料,以便為切換做準備
PREPARING SWITCHOVER 接受用於切換的重做資料時,邏輯備用配置會使用它
RECOVERY NEEDED 備用資料庫還沒有接收到切換請求
SESSIONS ACTIVE 在主資料庫中存在活動的SQL會話;在繼續執行之前必須斷開這些會話
SWITCHOVER PENDING 適用於那些已收到主資料庫切換請求但是還沒有處理該請求的備用資料庫
SWITCHOVER LATENT 切換沒有完成並返回到主資料庫
TO LOGICAL STANDBY 主資料庫已經收到了來自邏輯備用資料庫的完整的字典 TO PRIMARY 該備用資料庫可以轉換為主資料庫 TO STANDBY 該主資料庫可以轉換為備用資料庫

一、switchover

--主庫先切換,若是叢集,請現先關閉其他例項,留下一個例項進行操作
--檢視角色、狀態
select name,database_role,switchover_status from v$database;
--檢查歸檔日誌是否有中斷
select status.gap_status from v$archive_dest_status where dest_id=2;
--查詢切換前主庫的狀態,狀態為to standby、session active均可以切換為備庫 --to standby狀態切換操作 alter database commit to switchover to physical standby; --session active切換操作 alter database commit to switchover to physical standby with session shutdown; --切換完成後資料庫為關閉狀態,將新備庫啟動到mount狀態 shutdown immediate; startup nomount; alter database
mount standby database; --再切換備庫,查詢切換狀態、角色 select name,database_role,switchover_status from v$database; --查詢切換前主庫的狀態,狀態為to standby、session active均可以切換為備庫 --to primary狀態切換操作 alter database commit to switchover to physical primary; --session active切換操作 alter database commit to switchover to physical primary with session shutdown; --調整引數檔案,若主庫為叢集需刪除叢集相關引數避免開啟資料庫時出現報錯 shutdown immediate; startup pfile='/home/oracle/initdbjgxt.ora'; create spfile from pfile;

二、Failover

--停止日誌應用
alter database recover managed standby database cancel;
--關閉standby日誌傳輸
alter database recover managed standby database finish force;
--切換到primary
alter database commit to switchover to primary with session shutdown;
--做這一步的時候,若存在gap,則會報ORA-16139:Switchover: Media recovery required - standby not in limbo 錯誤。
--做測試的時候,若先起主庫再起備庫,且未等待備庫相關日誌傳輸完畢,就會出現這個問題。此時需要強制切換
alter database activate physical standby database;
--重啟資料庫到open狀態
alter database open;

 

--原文地址:https://www.cnblogs.com/ss-33/p/14858063.html