报错:SQL state [null]; error code [17410]; 无法从套接字读取更多的数据; nested exception is java.sql.SQLException:

问题:
之前系统运行正常,突然某一天某一个功能异常,其他功能正常,查看日志是执行一条oracle sql时报错

SQL state [null]; error code [17410]; 无法从套接字读取更多的数据;
nested exception is java.sql.SQLException: 无法从套接字读取更多的数据

调查:
查看oracle数据库日志,看是否报错
执行命令查看oracle日志存放路径

select name ,value from v$diag_info

执行结果
在这里插入图片描述
alert路径就是报警日志路径,找到该目录下的log.xml文件,发现里面的Errors信息:
详细报错信息在c:\app\diag\rdbms\orcl\orcl\trace\orcl_ora_15728.trc里
主要报错类型是 ORA-03137: TTC 协议内部错误: [12333] [5] [97] [100] [] [] [] []
在这里插入图片描述
解决:
百度查询 ORA-03137: TTC 协议内部错误: [12333] [5] [97] [100] [] [] [] []报错原因
参考:ORA-03137: TTC 协议内部错误: [12333] [4] [49] [51] [] [] [] []
ORA-03137: TTC 协议内部错误
最终解决办法:
执行下面命令

 alter system set "_optim_peek_user_binds"=false;

我是项目在本地环境出现了这个问题,就这样解决了,如果是生产,还需谨慎调查这条命令执行后带来的后果。

调查思路是参照如下博客,它查出来的报错原因和我不一样,是ORA-07445
java.sql.SQLException: 无法从套接字读取更多的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
启动"Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: interrupt"通常是由于数据库连池耗尽导致的。这个误表示应用程序无法从连池中获取到数据库连。 解决这个问题的方法有以下几种: 1. 增加连池的大小:可以通过增加连池的最大连数来解决连耗尽的问题。可以在连池配置文件中修改`maxActive`属性的值,增加连池的大小。 2. 检查数据库连是否正确关闭:确保在使用完数据库连后,及时关闭连。如果连没有正确关闭,会导致连池中的连无法释放,最终导致连耗尽。 3. 检查数据库连超时设置:检查数据库连超时的设置,确保连在一定时间内没有被使用时会被释放回连池。 4. 检查数据库服务器的负载:如果数据库服务器的负载过高,可能会导致连池中的连无法及时释放。可以通过监控数据库服务器的负载情况,及时调整服务器资源。 5. 检查数据库连配置:检查数据库连配置是否正确,包括数据库的URL、用户名、密码等信息。 6. 检查数据库驱动版本:有些数据库驱动存在bug,可能会导致连无法正常工作。可以尝试升级或数据库驱动版本。 以下是一个示例代码,演示如何使用连池获取数据库连: ```java import org.apache.commons.dbcp.BasicDataSource; public class ConnectionPoolExample { public static void main(String[] args) { BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mydb"); dataSource.setUsername("username"); dataSource.setPassword("password"); try (Connection connection = dataSource.getConnection()) { // 使用数据库连进行操作 } catch (SQLException e) { e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值