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

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

               服務器:weblogic11g集羣web

                數據庫:oracle數據庫Racsql

出錯信息: 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中的數據源是否可以正常鏈接。覈實之後;oracle

                       2.檢查數據庫服務器是否正常。檢查後,發現一臺數據庫服務器down了。測試

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

                          這種狀況很是不符合常理;日誌

                      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回從新分配其餘的服務器。

相關文章
相關標籤/搜索