专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

【oracle】无法从套接字读取更多数据

ins518 2024-10-23 12:47:25 技术文章 10 ℃ 0 评论

【地震高岗,一派西山千古秀】

问题背景(由于公司保密条例不便切图)

开发阶段使用Oracle测试库,彼时数据量较少,根据ID获取列表功能没问题,暂时未发现BUG。但是当在灰度环境进行试运行时,伴随列表数据突增,出现错误“无法从套接字读取更多数据”;如下提示: Cause:java.sql.SQLRecoverableException:无法从套接字读取更多的数据

分析过程

  1. 这个错误信息告诉我们几点:不是JDBC或者oracle的问题,应该是通信异常
  2. 尝试用客户端工具Navicat访问后台的sql是可以查询的
  3. 使用代码程序查询就会出现题目中的问题,并且可复现几率很大
  4. 问题原因方向:驱动问题、sql子查询问题

解决方案

  • 更新驱动版本,尝试重连后访问。(未解决)
  • 对于sql语句进行拆分优化,子查询使用多个sql语句进行查询结果的代码处理(未解决)

思考

对于分析过程是没有问题的,方向也是对的,那么为什么根据步骤执行还是无法解决,我们当前访问数据库是甲方客户VPN连接后访问,中间会有代理跳转访问,正值过年期间机房几乎没人值守,会不会出现路由司机了,想到这里感觉脑洞大开了,灵机一动,如果切换为本地数据库连接是不是可以正常加载接口数据呢?说干就干,数据源切换,打包重启服务,点开列表页面,哦吼!完美! 那么最终的原因是否如我们猜想的那样呢,记住程序员第一要义:不明觉厉的代码肯定是有问题的。后来我从服务器撸下来oracle日志分析:如图明显看到了错误信息:ORA 07445,这是一个非常普通的错误,在oracle的代码中产生,这个错误代码需要更详细的描述信息进一步跟踪



最后查询资料简单的执行了以下命令就解决了,上菜:alter session set "_optimizer_connect_by_cost_based" = false scope=both; 事实证明在甲方客户那边数据库执行后也没有出现问题,到此结束。

【门朝大海,三河合水万年流】

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表