一次DG故障診斷過程分析
資料庫DG 備庫端應用中斷,報錯如下 :
Corrupt block seq: 197835 blocknum=1.
Bad header found during deleting archived log
Data in bad block - flag:1. format:34. bno:1. seq:197835
beg:0 cks:35882
calculated check value: 35882
archivelog header validation failure for file /oradata/arch/1_197835_885747866.dbf
Reread of seq=197835, blocknum=1, file=/oradata/arch/1_197835_885747866.dbf, found same corrupt data
Errors in file /u01/app/oracle/diag/rdbms/orcldg/orcldg/trace/orcldg_pr00_26969.trc (incident=160231):
ORA-00353: log corruption near block 2 change 13904140140 time 03/23/2021 09:53:26
ORA-00312: online log 9 thread 1: '/oradata/orcldg/std_redo09.log'
Incident details in: /u01/app/oracle/diag/rdbms/orcldg/orcldg/incident/incdir_160231/orcldg_pr00_26969_i160231.trc
Tue Mar 23 09:54:59 2021
Dumping diagnostic data in directory=[cdmp_20210323095459], requested by (instance=1, osid=26969 (PR00)), summary=[incident=160231].
Errors in file /u01/app/oracle/diag/rdbms/orcldg/orcldg/trace/orcldg_pr00_26969.trc (incident=160232):
ORA-00355: change numbers out of order
ORA-00353: log corruption near block 2 change 13904140140 time 03/23/2021 09:53:26
ORA-00312: online log 9 thread 1: '/oradata/orcldg/std_redo09.log'
Incident details in: /u01/app/oracle/diag/rdbms/orcldg/orcldg/incident/incdir_160232/orcldg_pr00_26969_i160232.trc
MRP0: Background Media Recovery terminated with error 355
使用 sha256sum 運算日誌檔案大小,確實顯示與生產庫原始檔不同。
初步問題判斷為偶爾的歸檔日誌傳輸錯誤導致,將錯誤的日誌手工傳送到備庫後,重新應用日誌後, DG 同步恢復正常。
但第二天又出現相同錯誤。檢索 MOS 文件後,發現有如下文件與故障比較相似
Bug 6039415 - ORA-355 can occur during real time apply (Doc ID 6039415.8)
Bug 13840711 - ORA-353 in Standby / Streams Data Capture or ORA-272 in PRIMARY: Redo log corruption by ASYNC redo shipping (Doc ID 13840711.8)
troubleshooting corruption errors ORA-00353 ORA-00354 ORA-00355 ORA-00368 on standby database (Doc ID 2746179.1)
確實此資料庫版本為 11.2.0.3 ,並未打任何補丁,於是打上最後一個補丁,手工補全日誌後,重新同步。
未過多久,還是出現相同錯誤,故障並未解決。
進一步檢查發現 standby redo log 竟然有兩組同時為 acitve 狀態
正常情況下 standby redo log 應只有一組為 ACTIVE 狀態,對應生產庫的 current 那一組 redo log 。
懷疑導致此問題是否有如下可能:
1) 資料庫 BUG
2) 難道有另一個資料庫也將日誌發往此處?
針對資料庫 BUG 的情況,此處修改生產 redolog 日誌大小與原先不同(原先為 500M ,新新增一組 2048M ),並給 dg 端新增相同大小的 standby redo log 。結果還是有兩組同時為 ACTIVE 狀態。(正常情況下,只有與生產 redolog 大小完全一致的 standby redo log 才能被正常使用)
此時,第二種情況,有另一個資料庫也將日誌發往此處的可能性大大增加。
透過監聽日誌與 netstat -atnp 發現有另一個 IP 地址與 DG 端有通訊,登入到此主機後,發現為一臺虛擬機器克隆出來的生產庫,並未關閉 DG 同步。
解決辦法:停止克隆主機資料庫的 DG 傳送。
建議:
1) 開啟 DG 端防火牆,只放行生產主機 IP 地址,避免客戶再次克隆主機時出現此類問題。
補充:
Rac 下查詢 gv$standby_log 檢視時,結果中確實為會顯示有四組為 active 狀態。
需要注意的是其中 GROUP# 有一組是重複顯示的。實際上 ACTIVE 狀態的只有兩組。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23732248/viewspace-2887271/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 故障分析 | Kubernetes 故障診斷流程
- 一次SGA與Swap故障診斷
- 記一次使用gdb診斷gc問題全過程GC
- .記一次使用gdb診斷gc問題全過程GC
- 光纖故障診斷和故障排查
- 9 Oracle Data Guard 故障診斷Oracle
- 故障診斷為什麼要用深度學習?深度學習
- Kubernetes 叢集中 Ingress 故障的根因診斷
- cursor:pin S wait on X故障診分析AI
- 一次ORACLE IO效能診斷案例Oracle
- 一次Oracle診斷案例-Spfile案例Oracle
- 軟體專案過程診斷與改進建議案例
- 風機故障診斷學習資源(更新中)
- 大語言模型與資料庫故障診斷模型資料庫
- oracle之 redo過高診斷Oracle
- 解Bug之路-記一次儲存故障的排查過程
- 一次Oracle診斷案例-SGA與SwapOracle
- 一次ORACLE字元轉換分析過程Oracle字元
- MySQL故障診斷常用方法手冊(含指令碼、案例)MySql指令碼
- 網站SEO診斷分析要點網站
- 一次gc buffer busy問題的診斷GC
- 聽音識故障,人工智慧“診斷”機器新形式人工智慧
- 深度學習故障診斷——深度殘差收縮網路深度學習
- DG配置過程中的引數解釋
- mybatis-spring原始碼分析-一次insert過程MyBatisSpring原始碼
- 一次對pool的誤用導致的.net頻繁gc的診斷分析GC
- 京東科技全鏈路故障診斷智慧運維實踐運維
- 記一次NAS故障分析(ZFS NFS)NFS
- sp_sysmon效能診斷結果分析(zt)
- 資料庫異常智慧分析與診斷資料庫
- 5種常見的 DNS 故障診斷及問題處理方法DNS
- 線上故障突突突?如何緊急診斷、排查與恢復
- 一次「找回」TraceId的問題分析與過程思考
- 記一次VMware的崩潰除錯分析過程除錯
- [JVM] 應用診斷工具之Fastthread(線上診斷)JVMASTthread
- Win10系統下網路故障診斷功能的使用方法Win10
- 9. Oracle常用分析診斷工具——9.3.ADDMOracle
- 9. Oracle常用分析診斷工具——9.2. ASHOracle