Oracle報performing DMLDDL operation over object in bin案例分析

龍山游龍發表於2022-12-16

故障描述

某次,一套已經執行數年的Oracle 11gR2 RAC環境,使用者在檢查Alert資料庫告警日誌時不經意間看到performing DML/DDL operation over object in bin.告警資訊,由於該條資訊並不是錯誤或者告警,因此並不影響系統的穩定執行。但卻成功的引起了使用者的興趣,該條日誌的背後究竟發生了什麼,才會在告警日誌中列印出來。本篇將提供分析思路,旨在為了找出它背後的“真相”。

根因分析

透過解讀日誌本身,大概就能夠評估跟資料庫回收站物件相關,並且是對回收站物件做DDL和DML操作導致,驗證如下:

對回收站的表執行DML(delete),觀測命令執行情況,如下:

 

alert告警日誌輸出,如下:

 

對回收站的表執行DDL(drop),觀測命令執行情況,如下:

 

alert告警日誌輸出,如下:

 

因此,很快就得出結論,應該是資料庫中有SQL語句對回收站物件進行DML/DDL,才會導致alert告警日誌出現相關日誌。但是,使用者很快就駁回了這一結論,理由是業務側不會對回收站中的物件做處理,同時運維側也沒有做過類似的變更操作。所以,現在又帶來了新的問題,既然不是人為手動觸發,那這類日誌是怎麼被觸發。資料庫系統中的哪些動作會存在可能,帶著疑問,去MOS平臺模糊匹配,看看是否能找到想要的答案。

在MOS上,確實找到了引起出現這類日誌的集中場景:

場景一,參考文章ORA-38301: can not perform DDL/DML over objects in Recycle Bin (Doc ID 578075.1)

 

場景二,參考文章ORA-604 ORA-38301 ORA-30511 on alter/drop tablespace or other DDL/DML for objects in Recycle Bin - purge dba_recyclebin not helping (Doc ID 1484583.1)

 

場景三,參考文章'ORA-38301: can not perform DDL/DML over objects in Recycle Bin' while gathering DBMS_STATS (Doc ID 1542641.1)

 

這幾種場景雖然都可能是原因,但是與使用者溝通之後,都被否決掉了。那還有什麼原因可能會導致,此時陷入了思考。不經意間,突然想起,該使用者之前有一套別的Oracle系統,當時有一個跑批慢的案例,最終定位出來是由於訪問recyclebin$很慢,導致跑批時間很長,而recyclebin$相關的SQL是業務語句遞迴呼叫執行的,那本次故障會不會也是相同的原因。所幸的是,筆者電腦上還保留著上次案例處理的10046分析日誌,在該日誌中確實找到了回收站物件的語句,如下:

 

分析到此處,為什麼告警日誌中頻繁出現performing DML/DDL operation over object in bin的原因也能得到解釋了。為了進一步驗證結論的準確性,建議使用者清空回收站,在跟蹤觀測alert日誌是否繼續產生該條資訊,後續得到反饋日誌中的資訊沒了。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2928396/,如需轉載,請註明出處,否則將追究法律責任。

相關文章