首页 > 数据库 >【问题记录】Cause: java.sql.SQLRecoverableException: No more data to read from socket

【问题记录】Cause: java.sql.SQLRecoverableException: No more data to read from socket

时间:2024-05-28 15:14:41浏览次数:15  
标签:java socket read 查询 缓冲区 https Oracle 接字 客户端

异常说明:

    当Oracle客户端(应用)接收数据库服务器发送的数据时,它会从套接字中读取数据。如果在读取数据的过程中,套接字中没有更多的数据可供读取,那么Oracle客户端就会报告“没有更多数据从套接字读取”错误。

常见原因:

  1. 应用使用了连接池,当从连接池取得的connection失效或者超时的时候,使用这个连接来进行数据库操作就会抛出以上异常;
  2. 客户端和服务器之间的网络连接存在问题,导致数据传输中断;
  3. 数据库服务器上的某个进程崩溃或异常终止,导致无法提供数据;
  4. 查询结果集非常庞大,导致传输数据的套接字缓冲区已满;
  5. 触发了低版本Oracle的bug

解决方法:

  1. 开启连接池的TestSQL(ValidateQuery)等测试连接可用性的配置,检查关闭空闲长连接的配置max_idle_time,减少空闲连接数。
  2. 检查网络连接:确保客户端和服务器之间的网络连接正常。 联系网络管理员查看并确认网络警告日志(拦截或关闭长连接等)。
  3. 如果数据库服务器上的某个进程崩溃或终止导致错误发生,联系数据库管理员查找数据库服务的异常警告日志,查看相关线索(killsession)。
  4. 增加套接字缓冲区大小:如果查询结果集非常庞大,可以尝试增加传输数据的套接字缓冲区大小。可以通过调整操作系统的TCP缓冲区大小参数来实现。例如,在Linux系统中,可以使用sysctl命令来修改参数。
  5. 优化查询语句:如果查询结果集非常庞大,可以考虑优化查询语句以减小结果集的大小。可以使用合适的索引、分页查询或其他方法来限制结果集的大小。
  6. Oracle 11.2.0.4以下版本,可以尝试关闭绑定变量窥探的隐藏参数试试:_optim_peek_user_binds = false

 

参考资料:

https://blog.51cto.com/u_16112859/6277609 

https://developer.aliyun.com/article/286959

https://blog.csdn.net/cyzl5/article/details/106262365

https://www.cnblogs.com/lightdb/p/9580463.html 

https://blog.csdn.net/Mr_Runner/article/details/118964470

标签:java,socket,read,查询,缓冲区,https,Oracle,接字,客户端
From: https://www.cnblogs.com/zhaoguan_wang/p/18218045

相关文章

  • 基于java中的springboot框架实现医药管理系统项目演示【内附项目源码+论文说明】
    基于java中的springboot框架实现医药管理系统项目演示【内附项目源码+LW说明】摘要计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了,让整个世界都可以即......
  • 基于java中的springboot框架实现秒杀系统项目演示【内附项目源码+论文说明】
    基于java中的springboot框架实现秒杀系统项目演示【内附项目源码+LW说明】摘要社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱。本次开发一套基于SpringBoo......
  • java 对接农行支付相关业务(一)
    文章目录java整合农行支付1:业务需求了解2:第三方App接入农行支付流程2.1java集成农行依赖2.2java配置农行支付相关证书信息2.2.1:首先我们要配置ConfigSource文件2.2.2:配置TrustMerchant文件信息3:接入农行支付等相关api接口java整合农行支付......
  • 持续性学习-Day16(前端基础JavaScript)
    LearnJavaScript参考教学视频:秦疆参考知识UI框架Ant-design:阿里巴巴出品,基于React的UI框架ElementUI、iview、ice:饿了吗出品,基于VUE的UI框架BootStrap:Twitter推出的一个用于前端开发的开源工具包AmazeUI:一款HTML5跨屏前端框架JavaScript构建工具Babel:JS编译......
  • 京东二面:为什么Netty要造FastThreadLocal?
    FastThreadLocal从字面意义上来看,它是“Fast”+“ThreadLocal”的结合体,寓意为快速的ThreadLocal。那么,问题来了,Netty为什么要再造一个FastThreadLocal?FastThreadLocal运行快的原因是啥?除了快之外,它还有其他优势吗?1.先从ThreadLocal说起ThreadLocal线程本地变量,每个线程都......
  • 栈(Java代码实现)
    importjava.util.Scanner;publicclassTest{ publicstaticvoidmain(String[]args){ //测试一下ArrayStack是否正确 //先创建一个ArrayStack对象->表示栈(容量为10) ArrayStackstack=newArrayStack(10); Stringkey=""; booleanloop=true;//控......
  • java+Angular+Nginx微服务架构+VUE 基于SaaS云部署、云计算的区域医院云HIS系统源码
    java+Angular+Nginx微服务架构+VUE基于SaaS云部署、云计算的区域医院云HIS系统源码HIS系统:可以根据医院规模、个性流程定制个性化程序;以临床工作为核心,方便医生的临床医疗行为,提高医疗服务质量,能提供临床专科数据分析系统,可用于医疗评估、生物医学研究、教育和医疗保健管理......
  • mybatis异常: Invalid value type for attribute 'factoryBeanObjectType': java.lang
    问题描述:  springboot3.2.0版本以上编写mapper报错解决方案: 排查mybatilsplus自带的mybatils-spring,重新引入1<dependency>2<groupId>com.baomidou</groupId>3<artifactId>mybatis-plus-boot-starter</artifactId>4......
  • 学习JavaScrip 中常见的6种数组方法
    学习JavaScrip中常见的6种数组方法1.find()方法2.forEach()方法3.join()方法4.map()方法5.reduce()方法6.filter()方法1.find()方法find()方法取得数组中第一个满足回调函数中指定条件的元素。如果没有元素满足条件,这个方法返回undefined。下面的例子能够帮助你......
  • 基于SSM和VUE的五子棋手机网络对战游戏的设计与实现(免费提供全套java开源项目源码+论
    下载地址如下:【免费】基于SSM和VUE的五子棋手机网络对战游戏的设计与实现(免费提供全套java开源项目源码+论文)资源-CSDN文库项目介绍项目背景五子棋是一种古老且流行的棋类游戏,简单易学但变化无穷。随着移动互联网和智能手机的普及,手机端网络对战游戏的需求日益增长。为了满......