標籤:
首先說一下系統基礎架構:
伺服器: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回重新分配其他的伺服器。
解決weblogic錯誤:java.sql.SQLRecoverableException: IO Error: Broken pipe