您好,登錄后才能下訂單哦!
前言
小y最近處理了幾起Oracle數據庫文件損壞的case,因為某些Bug風險較大,因此不敢有絲毫怠慢,趕緊拿出來分享!希望能夠幫助到有需要的朋友!風險提示!
如上圖所示,Linux 5/6上的一個已知缺陷,在某些觸發條件下,將導致Oracle數據文件出現內容全是0的的壞塊。該操作系統上的缺陷,除了會導致Oracle數據庫數據文件損壞外,還會導致包括歸檔日志、在線日志的損壞。而如果是current狀態的在線日志發生損壞,那么對于數據庫的影響將是致命的。需要引起重視!
BUG觸發條件:
當同時滿足下列條件下時,會觸發一個Linux上的已知缺陷,導致數據庫數據文件或歸檔文件或在線日志文件的損壞:
1、 操作系統為Linux,版本為Redhat 5/6 或Oralce Linux 5/6
2、 數據文件/歸檔日志/在線日志所在的文件系統采用ext4
3、 數據庫參數filesystemio_options=SETALL(為了提升IO性能而設置)
4、 數據庫版本從10g到12c
如何修復?
filesystemio_options=none或
filesystemio_options=ASYNCH或
filesystemio_options=DIRECTIO
對于Redhat 5
在kernel-2.6.18-238.el5 - RHEL5.6 Errata RHSA-2011-0017 或更高的版本中修復
對于Redhat 6
在kernel-2.6.32-71 或更高的kernel版本中修復
更多內容,可以參考My Oracle Support,參考文檔號1487957.1:
ORA-1578 ORA-353 ORA-19599 Corrupt blocks with zeros when filesystemio_options=SETALL on ext4 file system using Linux (Doc ID 1487957.1)
小y已經好幾次處理該類型的case,接下來看一個最近的一個CASE。
相關案例分享
小y不是個懂得生活的人,故障處理、性能調優等工作占據了小y的全部生活,剩下的時間就是在補覺(好無趣的人啊)。小y也曾幻想走出門,多交些朋友。但小y不善言談,幫助他人解決問題就是小y交朋友的典型方式。
最近在微信里,看到jeanron楊建榮的Oracle公眾號發表了一篇名為<最近讓我焦灼的四個問題>的文章。其中第一個問題就是dataGuard備庫老報壞塊的問題。報錯如下所示
對于這個問題,jeanron已經分析了各種場景,前前后后做了不下十多種測試,基本都排除了,重建了多次,問題還是沒能解決。
看完該文章的時候,結合過去所處理的case,小y已經基本上可以斷定:
Jeanron很不幸,他遇到了文章一開始我們所提到的Bug了!
雖然和jeanron不熟,但幫助人和交朋友是小y現在很樂意做的事情。
于是小y私信了他,告訴他可能遇到操作系統的Bug了,并讓他做了以下檢查,很幸運的,小y又一次猜對了。
檢查結果,滿足bug的觸發條件Redhat 5.3
檢查結果,Linux的該Bug在kernel-2.6.18-238.el5以下會觸發,
而該Kernel版本為2.6.18-194,滿足Bug觸發條件
檢查結果,數據庫文件存放在/home目錄下,該目錄是ext4文件系統,滿足Bug觸發條件
檢查結果,數據庫參數filesystemio_options為SETALL,即同時支持異步IO和DIRECT IO,,滿足Bug觸發條件。
可以看到,所有觸發條件全部滿足,至此可以確認命中一開始提到的Linux BUG了。
在調整filesystemio_options=NONE后,jeanron確認問題得到最終解決。
小y很開心,除了解決問題帶來的成就感之外,
自己的經驗可以幫到客戶、幫到朋友,還可以交到朋友,
那不就是小y的追求么!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。