oracle数据库执行sql报错:"无法从套接字读取更多的数据"
在看一个项目上的问题时,发现该项目执行某一条比较复杂一点的sql时就会报错,系统提示“无法从套接字读取更多的数据”,然后在一段时间内,整个系统执行任何操作,任何sql,都会报该错误,导致整个系统无法使用,并且无法登录。但是过了10几分钟,又恢复了。
常见问题
- 有可能是sql中有查询clob或者blob类型的字段,由于字符超长了,数据库配置限制了,也会报改错(搜索了别的文章看到的)
- 大部分情况是sql中的where条件中有使用过多的in值条件,例如in('aa','123'........)超过一定的长度后,oracle也会有报该错误。解决方案是将in值放到临时表中,通过查询临时表来解决。
- oracle数据库的bug;
我遇到的问题
项目应用中报错提示“无法从套接字读取更多的数据”,但是将sql放到plsql中执行时就会提示:“ORA-03113: end-of-file on communication channel”如下图所示,并且plsql卡死,执行别的普通sql没有任何问题
解决方案
通过联系数据库工程师分析,该问题为oracle数据库的一个bug,通过设置参数
alter system set optimizer_features_enable='10.2.0.4';
该参数表示数据库sql优化器的版本,由于当前版本有问题,那么可以通过该参数把版本往前设置一个版本,绕过改bug。但是这样会影响数据库的sql执行的性能,设置完后应该验证测试,其他功能是否有影响。
分类:
数据库那点事
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2019-05-29 html 录音与文本转语音demo