我們正在使用Oracle作為Web應用程序的數據庫。該應用程序在大多數情況下都運行良好,但是出現了“不再需要從套接字讀取數據”錯誤。Caused by: java.sql.SQLRecoverableException: No more data to read from socket at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1142) at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1099) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:288) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:863) at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153) ... 63 more我們使用spring,hibernate,并且在我的應用程序上下文文件中有以下數據源。<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> <property name="driverClassName" value="${database.driverClassName}" /> <property name="url" value="${database.url}" /> <property name="username" value="${database.username}" /> <property name="password" value="${database.password}" /> <property name="defaultAutoCommit" value="false" /> <property name="initialSize" value="10" /> <property name="maxActive" value="30" /> <property name="validationQuery" value="select 1 from dual" /> <property name="testOnBorrow" value="true" /> <property name="testOnReturn" value="true" /> <property name="poolPreparedStatements" value="true" /> <property name="removeAbandoned" value="true" /> <property name="logAbandoned" value="true" /> </bean>我不確定這是由于應用程序錯誤,數據庫錯誤還是網絡錯誤引起的。Oracle版本:11.2.0.1.0
3 回答

UYOU
TA貢獻1878條經驗 獲得超4個贊
對于此類錯誤,您應該涉及oracle支持。不幸的是,您沒有提到正在使用的oracle版本。該錯誤可能與優化程序綁定偷看有關。根據oracle版本的不同,適用不同的解決方法。
您可以通過兩種方法解決此問題:
升級到11.2
設置oracle參數
_optim_peek_user_binds = false
當然,只有在oracle支持建議的情況下才應設置下劃線參數
添加回答
舉報
0/150
提交
取消