我们正在使用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支持建议的情况下才应设置下划线参数
- 3 回答
- 0 关注
- 1324 浏览
添加回答
举报
0/150
提交
取消