您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)如何解決oracle11gR2 DataGuard switchover切換的兩個(gè)錯(cuò)誤狀態(tài)的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
在公司的測(cè)試環(huán)境搭建了一套o(hù)racle11gR2 DataGuard,用來(lái)預(yù)生產(chǎn)測(cè)試。在Data Guard中分為兩種冗余切換,一種是switchover無(wú)損切換,一種是failover丟棄切換。
所謂switchover是針對(duì)failover而言的,它是一種無(wú)損切換,切換的過(guò)程中不會(huì)丟失數(shù)據(jù)。 可以平滑的使主備互換并且2個(gè)庫(kù)都可以正常使用。 切換過(guò)程:主庫(kù)->切換->備庫(kù)->檢查狀態(tài)->原備庫(kù)->切換->主庫(kù)->再檢查狀態(tài)
應(yīng)用場(chǎng)合:主庫(kù)因性能或其他原因需要調(diào)整升級(jí),這時(shí)可以切換后用新主庫(kù)對(duì)外提供服務(wù)。
關(guān)于DG的搭建過(guò)程這里就不詳述了,下面就切換過(guò)程中出現(xiàn)的兩個(gè)錯(cuò)誤狀態(tài)進(jìn)行分析和解決。
一、SWITCHOVER LATENT狀態(tài)
在備庫(kù)上查詢(xún)數(shù)據(jù)庫(kù)角色和狀態(tài)
SYS@standby> select database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
---------------- -------------------- --------------------
PHYSICAL STANDBY SWITCHOVER LATENT READ ONLY
發(fā)現(xiàn)是switchover latent而不是to primary
這個(gè)問(wèn)題是說(shuō)切換處于pending模式,沒(méi)有完成無(wú)法回到主庫(kù)。當(dāng)你查看ALERT日志時(shí),也沒(méi)有發(fā)現(xiàn)什么報(bào)錯(cuò),是不是要繼續(xù)等下去呢?其實(shí)不需要等待,出現(xiàn)這個(gè)問(wèn)題的原因就是日志沒(méi)有歸檔,所以備庫(kù)與主庫(kù)不一致,需要恢復(fù)。當(dāng)備庫(kù)恢復(fù)到和主庫(kù)一致后,狀態(tài)就會(huì)成為to_primary
驗(yàn)證一下這個(gè)問(wèn)題是不是上面所說(shuō)的原因,你可以繼續(xù)在備庫(kù)上執(zhí)行下面這句
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
這里提示需要介質(zhì)恢復(fù)。
根據(jù)以上的分析和定位,我們要解決這個(gè)問(wèn)題,需要在備庫(kù)上切斷應(yīng)用,啟用日志同步
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
顯示為T(mén)O PRIMARY,這時(shí)看狀態(tài)就正常了。
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
打開(kāi)數(shù)據(jù)庫(kù)
sys@standby>alter database open;
切換一下日志
sys@standby> alter system switch logfile ;
System altered.
再檢查一下日志的狀態(tài)
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
發(fā)現(xiàn)都是YES,說(shuō)明已經(jīng)同步了。
二、FAILED DESTINATION狀態(tài)
當(dāng)備庫(kù)切換為主庫(kù)后,發(fā)現(xiàn)切換狀態(tài)為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
發(fā)現(xiàn)是FAILED DESTINATION而不是to standby
這個(gè)問(wèn)題說(shuō)明主庫(kù)連接備庫(kù)有問(wèn)題,可以具體查看一下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.
這里說(shuō)明備庫(kù)的監(jiān)聽(tīng)有問(wèn)題,重啟備庫(kù)監(jiān)聽(tīng),再查狀態(tài)就變成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
當(dāng)然導(dǎo)致FAILED DESTINATION的原因會(huì)有很多,比如log_archive_dest_2 參數(shù)的屬性值還有口令文件的配置出錯(cuò)或者權(quán)限問(wèn)題等。
總之出了問(wèn)題,面對(duì)問(wèn)題分析問(wèn)題就對(duì)了,從中你可以學(xué)到很多。
附Switchover_Status值的含義
NOT ALLOWED
當(dāng)前的數(shù)據(jù)庫(kù)不是帶有備用數(shù)據(jù)庫(kù)的主數(shù)據(jù)庫(kù)
PREPARING DICTIONARY
該邏輯備用數(shù)據(jù)庫(kù)正在向一個(gè)主數(shù)據(jù)庫(kù)和其他備用數(shù)據(jù)庫(kù)發(fā)送它的重做數(shù)據(jù),以便為切換做準(zhǔn)備
PREPARING SWITCHOVER
接受用于切換的重做數(shù)據(jù)時(shí),邏輯備用配置會(huì)使用它
RECOVERY NEEDED
備用數(shù)據(jù)庫(kù)還沒(méi)有接收到切換請(qǐng)求
SESSIONS ACTIVE
在主數(shù)據(jù)庫(kù)中存在活動(dòng)的SQL會(huì)話(huà);在繼續(xù)執(zhí)行之前必須斷開(kāi)這些會(huì)話(huà)
SWITCHOVER PENDING
適用于那些已收到主數(shù)據(jù)庫(kù)切換請(qǐng)求但是還沒(méi)有處理該請(qǐng)求的備用數(shù)據(jù)庫(kù)
SWITCHOVER LATENT
切換沒(méi)有完成并返回到主數(shù)據(jù)庫(kù)
TO LOGICAL STANDBY
主數(shù)據(jù)庫(kù)已經(jīng)收到了來(lái)自邏輯備用數(shù)據(jù)庫(kù)的完整的字典
TO PRIMARY
該備用數(shù)據(jù)庫(kù)可以轉(zhuǎn)換為主數(shù)據(jù)庫(kù)
TO STANDBY
該主數(shù)據(jù)庫(kù)可以轉(zhuǎn)換為備用數(shù)據(jù)庫(kù)
感謝各位的閱讀!關(guān)于“如何解決oracle11gR2 DataGuard switchover切換的兩個(gè)錯(cuò)誤狀態(tài)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。