ORA-3137问题解决
环境:oracle版本为linux版 64位11.2.0.1.0
今天项目的应用日志中报出【java.sql.SQLException:OALL8处于不一致状态】的错误,流程走不下去,查看了一下oracle的诊断日志,后台报出了ORA-3137[12333] TTC 协议内部错误[7][120][121][][][][]的错误,
经过一番资料查找,查明是由于oracle的bug引起的,通过重启数据库临时解决了问题。
对于使用11gR1以及11gR2早期版本的用户如果启用了绑定变量窥探或者使用JDBC驱动程序连接到ORACLE数据库的时候会发生ORA-3137[12333]的报错。这种报错是间歇性的。
下面罗列一下出现这类错误的补丁:
1.Unpublished Bug 8625762 – ORA-3137 [12333] due to bind data not read from wire
这个bug会影响11.2之前版本的数据库,该问题已经在11.2之后的数据库中已被修复,这是一个绑定变量窥探的BUG,同时是间歇性才会发生的BUG
通常由下面的报错引起:
ORA-3137: TTC protocol internal error : [1010] [] [] [] [] [] [] []
2.Unpublished Bug 9703463 – ORA-3137 [12333] or ORA-600 [kpobav-1] When Using Bind Peeking
这个bug影响11.1.0.6、11.1.0.7和11.2.0.1版本的数据库,该BUG已经在11.2.0.2的数据库中被修复。
该BUG的发生也是间歇性的,同样是绑定变量窥探引起的BUG,跟Bug:8625762的情况比较类似。
3.Unpublished Bug:9243912 – Additional diagnostics for ORA-3137 [12333] / OERI:12333
这个bug影响11.2.0.2之前版本的数据库,该bug已经在11.2.0.2中被修复。
这个错误ORA-3137[12333]发生在客户机/服务器通信过程中的绑定问题。该错误对应一个更具描述性的报错:ORA-600 [kpobav-1]。
4.Bug 7390077 ORA-03137: TTC PROTO INTERNAL ERROR: [12333] [8] [80] [65]
这个bug影响11.1.0.6及11.1.0.7的一些早期版本数据库,已经在11.1.0.7.8版本中修复。
解决这类bug的方法:
1.禁用绑定变量窥视
SQL> alter system set "_optim_peek_user_binds"=false;
禁用绑定变量窥探可能对数据库产生影响,它可以改变原先使用绑定变量的SQL的一些执行计划。
2.打相关补丁
PSU11.1.0.7.8补丁12419384包含补丁:9703463
对于11.1.0.7版本数据库,补丁9243912可以被应用在11.1.0.7.8之上而没有任何冲突。
补丁:9703463,也可单独应用,但需要PSU11.1.0.7.6
补丁:8625762,也适用于数据库版本11.1.0.7
3.升级数据库
升级到11.2.0.4 11g的最终版本。
4. 重启数据库
重启数据库能临时性解决问题,此后还会间歇性出现此问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?