Oracle 错误 java.sql.SQLRecoverableException: No more data to read from socket

本文记录了一次数据库连接池出现Nomoredatatoreadfromsocket异常的排查过程,最终定位为数据库重启导致原有连接失效。

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

周末的时候Java程序的连接池突然出问题,报错如下所示。

java.sql.SQLRecoverableException: No more data to read from socket

此问题不是特定的页面存在,而是所有连接数据库查询的功能均报错

先确定一下排查的思路吧,

1.周五的时候确实我们有新的功能上线,所以首先排查是否是新功能影响了连接的释放,结果确定不是。

2.是否是因为工具类或者公用方法被修改导致数据库连接问题,结果确定没有修改。

经过网上查找资料和其他渠道,得知此问题通常是连接失效或者超时造成的。

那我们知道连接池这个东西,通常是程序初始化的时候就创建了很多连接,之后如果这些连接不够用,可能会有更多连接被创建使用,用完了可能会释放,这些都是看配置的;归根结底有一部分是初始就存在的,作为核心连接,它们失效或者超时的可能性更大。

然后跟数据库开发同事了解到,如果程序和数据库都正常运行,那连接是不会超时或者失效的,程序出现重大问题重启后也能重新获取数据库连接,除非数据库重启或者经历过dump,原有的连接它就不认识了,会造成连接失效,这时程序需要重新初始化,获取新的连接。

最后问了一下DBA,周末在做个什么测试,数据库重启过。。。。所以重启下应用程序就可以了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值