問題描述:我們配置DG的目的就是為了在主庫出現故障時,備庫能夠提供服務,保證業務的正常運行,switchover是用戶有計劃的進行停機切換,能夠保證不丟失數據,我記錄一下我進行switchover中的操作。 1.主庫(orcl) 備庫(orclstd) ,查看主庫上的狀態,角色orcl是主庫 SQL ...
問題描述:我們配置DG的目的就是為了在主庫出現故障時,備庫能夠提供服務,保證業務的正常運行,switchover是用戶有計劃的進行停機切換,能夠保證不丟失數據,我記錄一下我進行switchover中的操作。
1.主庫(orcl) 備庫(orclstd) ,查看主庫上的狀態,角色orcl是主庫
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
TO STANDBY PRIMARY
2.switch轉換主庫orcl為物理備庫,並查看更改後的角色
SQL> alter database commit to switchover to physical standby with session shutdown;
SQL> startup mount;
SQL> select database_role from v$database;
3以下都是在orclstd備庫上操作,一樣的先查詢狀態角色是否具備切換的條件,註意:上面查詢結果顯示為TO PRIMARY 或 SESSIONS ACTIVE表明可以切換成主庫
SQL> select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
------------------------------------
TO PRIMARY PHYSICAL STANDBY
4.切換orclstd(原備庫)為物理主庫,並查詢更改後的角色和狀態,很顯然我的switchover_status狀態為RESOLVABLE GAP,大概就是還有歸檔沒有傳輸過去一類的
SQL> alter database commit to switchover to primary with session shutdown;
SQL> alter database open;
SQL> select switchover_status,database_role,open_mode from v$database;
5.網上找了很多篇文檔,貌似全都是一樣抄的,SQL> alter system flush redo to 'orcl'; 都是這個命令,刷新redo 到新備庫去,但是我的一直報錯
這個名字需要加上單引號,否則識別不了,錯誤提示我的db_unique_name不再設置內,我查詢了一下設置,服了沒毛病啊,這一點一直不清楚怎麼回事
6.在同事的幫助下,查看了pfile的設置,將log_archive_dest_2='SERVICE名字設置為新的備庫orcl,可能因為orclstd是我老的備庫,service名字沒有改,這裡改一下,或者在sqlplus 中進行alter system 設置也可以
7.修改過之後,新的備庫能夠接受到歸檔,然後可以進行同步了
SQL> select switchover_status,database_role from v$database;
8.驗證:在新主庫上切換日誌,並查詢最大序列號為62
SQL> alter system archive log current;
SQL> select max(sequence#) from v$archived_log;
9.同樣的在主庫查詢,一樣的都是62,驗證成功,switchover切換完成
SQL> select max(sequence#) from v$archived_log;