dg broker校驗失敗的一個奇怪問題(r8筆記第50天)
阿新 • • 發佈:2022-05-04
前幾天碰到一個看起來有些奇怪的例子,今天抽空把分析過程整理了一下。
有一主一備的一套測試環境,之前環境在我手裡,交給另外一個同事之後,重新搭建了dataguard,我檢查了一圈,發現都沒有問題,然後過了一個星期的 樣子,無意中再次檢視的時候,發現這個備庫竟然在dg broker中的狀態是disable,當然我也不能看到這個現象就反問同事,說當時dataguard怎麼有這種低階操作問題。我想了想,根據我的印 象,當時也確實是搭建成功了。這些天這個主庫也從來沒有任何的操作,zabbix也一直沒有相關的報警,這個問題引起了我的興趣,我們來查一查。
大體的架構環境是這樣的,有兩臺獨立的測試環境,目前因為schema有一些重合,沒有整合到一起,因為平時的負載極小,而且存在單點故障,就把原來的邏 輯備份方式改成了dataguard。這樣我們基本就從這些邏輯備份校驗中解放出來了。因為平時負載小,使用率不高,所以就把備庫都搭建到了同一個臺服務 器上。
這次dg broker校驗出問題的是test1的主庫
現象就是:
DGMGRL> show configuration;
Configuration - testdb_dg
Protection Mode: MaxPerformance
Databases:
sactvdb - Primary database
s2actvdb - Physical standby database (disabled)
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> enable database s2actvdb;
Error: ORA-16631: operation requires shutdown of database or instance ""
Failed.
DGMGRL> show database verbose s2actvdb;
Database - s2actvdb
Role: PHYSICAL STANDBY
Intended State: OFFLINE
Transport Lag: (unknown)
Apply Lag: (unknown)
Real Time Query: OFF
Instance(s):
actvdb
Properties:
DGConnectIdentifier = 's2actvdb'
ObserverConnectIdentifier = ''
LogXptMode = 'ASYNC'
DelayMins = '0'
Binding = 'optional'
MaxFailure = '0'
MaxConnections = '1'
...
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
SidName = 'actvdb'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxx)(PORT=1528))(CONNECT_DATA=(SERVICE_NAME=s2actvdb_DGMGRL)(INSTANCE_NAME=actvdb)(SERVER=DEDICATED)))'
StandbyArchiveLocation = 'USE_DB_RECOVERY_FILE_DEST'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t_%s_%r.dbf'
TopWaitEvents = '(monitor)'
Database Status:
SHUTDOWN
DGMGRL> edit database s2actvdb set state='ONLINE';
Error: ORA-16525: the Data Guard broker is not yet available
Failed.
這個時候雖然拋錯,dg broker的校驗結果卻發生了變化。
DGMGRL> show configuration;
Configuration - testdb_dg
Protection Mode: MaxPerformance
Databases:
sactvdb - Primary database
s2actvdb - Physical standby database
Error: ORA-16525: the Data Guard broker is not yet available
Fast-Start Failover: DISABLED
Configuration Status:
ERROR
TNS-12564: TNS:connection refused
ns secondary err code: 0
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Tue Mar 22 17:53:59 2016
ALTER SYSTEM SET log_archive_dest_state_2='RESET' SCOPE=BOTH;
在置為RESET之前出現了網路連線問題,時間點就是備庫重啟的時間,看起來確實是備庫重啟導致的,為什麼會有這個特殊的內部操作呢。
準備再次復現這個問題,但是重啟之後再就沒有出現這個問題。問題雖然解決了。但是這個問題就一直在腦海中縈繞,因為我還沒有找到問題的根本原因。為了進一步驗證,我開始準備急需檢視更多的日誌,嘗試復現這個問題。