您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何解決oracle11gR2 DataGuard switchover切換的兩個錯誤狀態的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在公司的測試環境搭建了一套oracle11gR2 DataGuard,用來預生產測試。在Data Guard中分為兩種冗余切換,一種是switchover無損切換,一種是failover丟棄切換。
所謂switchover是針對failover而言的,它是一種無損切換,切換的過程中不會丟失數據。 可以平滑的使主備互換并且2個庫都可以正常使用。 切換過程:主庫->切換->備庫->檢查狀態->原備庫->切換->主庫->再檢查狀態
應用場合:主庫因性能或其他原因需要調整升級,這時可以切換后用新主庫對外提供服務。
關于DG的搭建過程這里就不詳述了,下面就切換過程中出現的兩個錯誤狀態進行分析和解決。
一、SWITCHOVER LATENT狀態
在備庫上查詢數據庫角色和狀態
SYS@standby> select database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
---------------- -------------------- --------------------
PHYSICAL STANDBY SWITCHOVER LATENT READ ONLY
發現是switchover latent而不是to primary
這個問題是說切換處于pending模式,沒有完成無法回到主庫。當你查看ALERT日志時,也沒有發現什么報錯,是不是要繼續等下去呢?其實不需要等待,出現這個問題的原因就是日志沒有歸檔,所以備庫與主庫不一致,需要恢復。當備庫恢復到和主庫一致后,狀態就會成為to_primary
驗證一下這個問題是不是上面所說的原因,你可以繼續在備庫上執行下面這句
sys@standby> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN
*
ERROR at line 1:
ORA-16139: media recovery required
這里提示需要介質恢復。
根據以上的分析和定位,我們要解決這個問題,需要在備庫上切斷應用,啟用日志同步
SYS@standby> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Database altered.
SYS@standby> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
顯示為TO PRIMARY,這時看狀態就正常了。
SYS@standby> alter database commit to switchover to primary with session shutdown;
Database altered.
SYS@standby> select database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
---------------- -------------------- --------------------
PRIMARY NOT ALLOWED MOUNTED
打開數據庫
sys@standby>alter database open;
切換一下日志
sys@standby> alter system switch logfile ;
System altered.
再檢查一下日志的狀態
SYS@standby> select sequence#,standby_dest,archived,applied,status from v$archived_log;
SEQUENCE# STA ARC APPLIED S
---------- --- --- --------- -
4 NO YES YES A
5 NO YES YES A
6 NO YES YES A
7 NO YES YES A
8 NO YES YES A
9 NO YES YES A
10 NO YES YES A
11 NO YES YES A
11 NO YES YES A
10 NO YES YES A
12 NO YES YES A
發現都是YES,說明已經同步了。
二、FAILED DESTINATION狀態
當備庫切換為主庫后,發現切換狀態為FAILED DESTINATION
SYS@primary> select database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
---------------- -------------------- --------------------
PRIMARY FAILED DESTINATION READ WRITE
發現是FAILED DESTINATION而不是to standby
這個問題說明主庫連接備庫有問題,可以具體查看一下ALERT日志,看看是怎么回事
Error 12541 received logging on to the standby
Check whether the listener is up and running.
Errors in file /u01/app/oracle/diag/rdbms/primary/primary/trace/primary_arc2_2546.trc:
ORA-12541: TNS:no listener
PING[ARC2]: Heartbeat failed to connect to standby 'standby'. Error is 12541.
這里說明備庫的監聽有問題,重啟備庫監聽,再查狀態就變成to standby了
SYS@primary> select database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
---------------- -------------------- --------------------
PRIMARY TO STANDBY READ WRITE
當然導致FAILED DESTINATION的原因會有很多,比如log_archive_dest_2 參數的屬性值還有口令文件的配置出錯或者權限問題等。
總之出了問題,面對問題分析問題就對了,從中你可以學到很多。
附Switchover_Status值的含義
NOT ALLOWED
當前的數據庫不是帶有備用數據庫的主數據庫
PREPARING DICTIONARY
該邏輯備用數據庫正在向一個主數據庫和其他備用數據庫發送它的重做數據,以便為切換做準備
PREPARING SWITCHOVER
接受用于切換的重做數據時,邏輯備用配置會使用它
RECOVERY NEEDED
備用數據庫還沒有接收到切換請求
SESSIONS ACTIVE
在主數據庫中存在活動的SQL會話;在繼續執行之前必須斷開這些會話
SWITCHOVER PENDING
適用于那些已收到主數據庫切換請求但是還沒有處理該請求的備用數據庫
SWITCHOVER LATENT
切換沒有完成并返回到主數據庫
TO LOGICAL STANDBY
主數據庫已經收到了來自邏輯備用數據庫的完整的字典
TO PRIMARY
該備用數據庫可以轉換為主數據庫
TO STANDBY
該主數據庫可以轉換為備用數據庫
感謝各位的閱讀!關于“如何解決oracle11gR2 DataGuard switchover切換的兩個錯誤狀態”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。