解決weblogic錯誤:java.sql.SQLRecoverableException: IO Error: Broken pipe


首先說一下系統基礎架構:

               服務器:weblogic11g集群

                數據庫:oracle數據庫Rac

出錯信息: 1.java.sql.SQLRecoverableException: Closed Connection

              2.Test "SELECT 1 FROM DUAL" set up for pool "mds-soa" failed with exception: "java.sql.SQLRecoverableException: IO Error: Broken pipe"

日志信息是以上兩種,可以看出是輸入源的問題。

解決思路及步驟:1.check 在weblogic的jndi中的數據源是否能夠正常連接。核實以后;

                       2.檢查數據庫服務器是否正常。檢查后,發現一台數據庫服務器down了。

                          然后檢查業務數據,發現,在down之后,weblogic服務器端已經連續報了兩天這種錯誤。

                          這種情況非常不符合常理;

                      3.我們首先懷疑的是RAC環境安裝配置有問題,沒有在集群中的一台數據庫down了之后及時的切換。

                         經排查,不可能是這種原因。

                      4.再次返回到weblogic集群配置中,我們仔細檢查數據源的配置,一次點擊Domain->Service->Data Source->Configuration->Connection Pool

                          在Advance中,我們發現了一個配置“Test Connections On Reserve”,其屬性值為false

                           此屬性的含義為:“使 WebLogic Server 能夠在將連接提供給客戶機之前對連接進行測試。(要求指定“測試表名稱”。)此測試在響應客戶機對池中的連接的 請                                                   求時將添加短時間的延遲,但會確保客戶機收到有效連接。MBean 屬性 (不適用於應用程序模塊)”

                          此時,改變改屬性值為true,問題解決

 此屬性若為true,則在調用jndi的方式調用數據庫的時候,會首先檢查“SQL SELECT 1 FROM DUAL”,若值不為null,則weblogic將會和RAC中的一台數據庫服務器建立連接;若值為null,則RAC回重新分配其他的服務器。

                          


免責聲明!

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



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