oracle No more data to read from socket之ora-07445排查解決


 

今天下午,原來一個部門的同事找過來,說有個即將上線的環境偶爾會出現 No more data to read from socket錯誤,版本是oracle 11.2.0.1,如下:

經查,這個問題原因比較多,有oracle自己的bug,有可能配置的問題,也有可能代碼上的問題。主要有如下:

1、jdbc連接池大小問題,我們最小10、最大100,有校驗有效性,此原因排除;

2、有可能是內存不足的原因,經查看sar歷史,排除此原因;

3、有可能綁定變量偷窺問題,可設置_optim_peek_user_binds = false解決;

上述參考:https://stackoverflow.com/questions/7839907/no-more-data-to-read-from-socket-error

對於此類問題,首要排查的就是oracle alert和trace,根據開發反饋的時間段,果然有很多的dump:

逐步往上排查,一共有下列幾類ORA-07445:

ORA-07445: exception encountered: core dump [pfr_v3_tab_handler()+311] [SIGSEGV] 

確認的bug 10269022,Executing a PL/SQL block dynamically that returns a REF CURSOR fails with ORA-7445 [pfr_v3_tab_handler] – superceded,11.2.0.3修復

ORA-07445: 出現異常錯誤: 核心轉儲 [ksuklms()+316]

 

確認的bug 13322802,11.2.0.4修復

ORA-07445: exception encountered: core dump [dbgrmqmqpk_query_pick_key()+2033] 

確認的bug 9390347,11.2.0.2修復

ORA-07445: exception encountered: core dump [kocgpn2()+141] [SIGSEGV] 

這個錯誤號沒有查到相應的bug記錄。

最后,讓用戶升級到11.2.0.4解決。

除此之外,有可能是sql太復雜所致,比如sql中有with子句,with又引用了另一個with,扁平化后也可能可以解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM