Java不一致的状态,java.lang.Exception: OALL8 处于不一致状态

本文记录了在Java应用程序中遇到的两个错误:`OALL8处于不一致状态`和`无法从套接字读取更多的数据`。前者是由于ojdbc.jar版本不匹配导致,通过确保中间件和开发环境中jar包的一致性解决了问题。后者则与SQL查询有关,复杂关联查询可能导致此问题,通过将加号(+)的关联查询改为LEFT JOIN方式解决了问题。建议遇到类似问题的开发者检查相关依赖和SQL语句结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.Exception: OALL8 处于不一致状态

java.lang.Exception: 无法从套接字读取更多的数据

java.lang.Exception: 无法从套接字读取更多的数据

03:41:55,611 ERROR [STDERR] at com.iss.itreasury.settlement.remind.process.RemindProcess.StartRemindProcess(RemindProcess.java:1181)

03:41:55,611 ERROR [STDERR] at com.iss.itreasury.settlement.remind.process.RemindTask.run(RemindTask.java:39)

03:41:55,611 ERROR [STDERR] at java.util.TimerThread.mainLoop(Timer.java:512)

03:41:55,611 ERROR [STDERR] at java.util.TimerThread.run(Timer.java:462)

03:41:55,918 ERROR [STDERR] java.sql.SQLException: OALL8 处于不一致状态

03:41:55,918 ERROR [STDERR] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)

03:41:55,918 ERROR [STDERR] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)

03:41:55,918 ERROR [STDERR] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)

03:41:55,918 ERROR [STDERR] at oracle.jdbc.driver.T4C8Oall.marshal(T4C8Oall.java:352)

03:41:55,918 ERROR [STDERR] at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:199)

03:41:55,919 ERROR [STDERR] at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:796)

03:41:55,919 ERROR [STDERR] at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1031)

03:41:55,919 ERROR [STDERR] at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:836)

03:41:55,919 ERROR [STDERR] at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1124)

03:41:55,919 ERROR [STDERR] at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)

03:41:55,919 ERROR [STDERR] at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)

03:41:55,919 ERROR [STDERR] at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:236)

03:41:55,919 ERROR [STDERR] at com.iss.itreasury.loan.awake.bizlogic.Awake.getAllAwakeContract(Awake.java:2093)

03:41:55,919 ERROR [STDERR] at com.iss.itreasury.loan.awake.bizlogic.AwakeTask.run(AwakeTask.java:43)

03:41:55,919 ERROR [STDERR] at java.util.TimerThread.mainLoop(Timer.java:512)

03:41:55,919 ERROR [STDERR] at java.util.TimerThread.run(Timer.java:462)

03:41:55,919 ERROR [STDERR] java.lang.Exception: OALL8 处于不一致状态

03:41:55,919 ERROR [STDERR] at com.iss.itreasury.loan.awake.bizlogic.Awake.getAllAwakeContract(Awake.java:2181)

03:41:55,919 ERROR [STDERR] at com.iss.itreasury.loan.awake.bizlogic.AwakeTask.run(AwakeTask.java:43)

03:41:55,919 ERROR [STDERR] at java.util.TimerThread.mainLoop(Timer.java:512)

03:41:55,919 ERROR [STDERR] at java.util.TimerThread.run(Timer.java:462)

【OALL8 处于不一致状态】问题是因为ojdbc.jar的版本的问题,需保证中间件中使用的jar包和开发环境中的jar包保持一致。

我的是把ojdbc.jar更新至最新版本后解决该问题。

【java.lang.Exception: 无法从套接字读取更多的数据】这个问题在百度的时候说法比较多,我测试以后,发现我的是因为sql语句的问题。

参照http://simon-fish.iteye.com/blog/1059068这篇博客的说法,将SQL语句中复杂的关联查询都换成left join的方式进行关联,问题解决。

注:上面的博客中,博主用的是子查询导致该问题,我的是用的左连接关联查询(加号(+)的方式关联)导致了该问题。修改为left join方式连接查询后问题解决。

此处记录备忘,如有遇到相同问题的,可从这些方面着手排查问题的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值