共計(jì) 3384 個(gè)字符,預(yù)計(jì)需要花費(fèi) 9 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān)如何解決 oracle11gR2 DataGuard switchover 切換的兩個(gè)錯(cuò)誤狀態(tài)的內(nèi)容。丸趣 TV 小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過來(lái)看看吧。
在公司的測(cè)試環(huán)境搭建了一套 oracle11gR2 DataGuard,用來(lái)預(yù)生產(chǎn)測(cè)試。在 Data Guard 中分為兩種冗余切換,一種是 switchover 無(wú)損切換,一種是 failover 丟棄切換。
所謂 switchover 是針對(duì) failover 而言的,它是一種無(wú)損切換,切換的過程中不會(huì)丟失數(shù)據(jù)??梢云交氖怪鱾浠Q并且 2 個(gè)庫(kù)都可以正常使用。切換過程:主庫(kù) - 切換 - 備庫(kù) - 檢查狀態(tài) - 原備庫(kù) - 切換 - 主庫(kù) - 再檢查狀態(tài)
應(yīng)用場(chǎng)合:主庫(kù)因性能或其他原因需要調(diào)整升級(jí),這時(shí)可以切換后用新主庫(kù)對(duì)外提供服務(wù)。
關(guān)于 DG 的搭建過程這里就不詳述了,下面就切換過程中出現(xiàn)的兩個(gè)錯(cuò)誤狀態(tài)進(jìn)行分析和解決。
一、SWITCHOVER LATENT 狀態(tài)
在備庫(kù)上查詢數(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è)問題是說(shuō)切換處于 pending 模式,沒有完成無(wú)法回到主庫(kù)。當(dāng)你查看 ALERT 日志時(shí),也沒有發(fā)現(xiàn)什么報(bào)錯(cuò),是不是要繼續(xù)等下去呢?其實(shí)不需要等待,出現(xiàn)這個(gè)問題的原因就是日志沒有歸檔,所以備庫(kù)與主庫(kù)不一致,需要恢復(fù)。當(dāng)備庫(kù)恢復(fù)到和主庫(kù)一致后,狀態(tài)就會(huì)成為 to_primary
驗(yàn)證一下這個(gè)問題是不是上面所說(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è)問題,需要在備庫(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
顯示為 TO 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
打開數(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è)問題說(shuō)明主庫(kù)連接備庫(kù)有問題,可以具體查看一下 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)聽有問題, 重啟備庫(kù)監(jiān)聽,再查狀態(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)限問題等。
總之出了問題,面對(duì)問題分析問題就對(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ù)還沒有接收到切換請(qǐng)求
SESSIONS ACTIVE
在主數(shù)據(jù)庫(kù)中存在活動(dòng)的 SQL 會(huì)話;在繼續(xù)執(zhí)行之前必須斷開這些會(huì)話
SWITCHOVER PENDING
適用于那些已收到主數(shù)據(jù)庫(kù)切換請(qǐng)求但是還沒有處理該請(qǐng)求的備用數(shù)據(jù)庫(kù)
SWITCHOVER LATENT
切換沒有完成并返回到主數(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í),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!