Oracle ORA-03137: TTC protocol internal error : [12333] 故障分析
Posted tianlesoftware
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle ORA-03137: TTC protocol internal error : [12333] 故障分析相关的知识,希望对你有一定的参考价值。
程序通过JDBC 连接数据库异常,报 ORA-03137[12333]的错误。
当前程序的JDBC 驱动版本:ojdbc16-11.2.0.1.0.jar
数据库版本: 11.2.0.3
一. Log 信息
1.1 告警日志
TNS-12637: 数据包接收失败
ns 次级错误代码:12532
nt 主错误代码: 0
nt 辅助错误代码: 0
nt OS 错误代码: 0
由于ORA-609,opiodr中止过程未知ospid(28518)
周五 8月 09 15:41:20 2013
文件 /u01/app/oracle/diag/rdbms/tserpdb/tserpdb/trace/tserpdb_ora_28329.trc 中的错误(incident=60746):
ORA-03137: TTC 协议内部错误: [12333] [19] [3] [14]
事件详细信息:/u01/app/oracle/diag/rdbms/tserpdb/tserpdb/incident/incdir_60746/tserpdb_ora_28329_i60746.trc
周五 8月 09 15:41:21 2013
扫描 [inc][60746]: 已完成
扫描 [inc2][60746]: 已完成
周五 8月 09 15:41:21 2013
间接转储诊断数据=[cdmp_20130809154121],请求者(实例=1,osid=28329),摘要=[事件=60746]。
星期五 八月 09 15:59:42 2013
1.2 trace 文件
Dump file/u01/app/oracle/diag/rdbms/tserpdb/tserpdb/incident/incdir_60746/tserpdb_ora_28329_i60746.trc
Oracle 数据库 11g 企业版发布 11.2.0.3.0 - 64 位生产
具有分区,自动存储管理,OLAP,数据挖掘
和实际应用程序测试选项
ORACLE_HOME =/u01/app/oracle/product/11.2.0/dbhome_1
系统名称: Linux
节点名称: sh-tsiagent-003180
发布: 2.6.18-308.el5
版本: #1SMP 二月 21 20:06:06 EST 2012
机器:x86_64
实例名称: 台式数据库
重做此实例挂载的线程:1
甲骨文进程号: 92
Unix process pid: 28329, image:oracle@sh-tsiagent-003180
*** 2013-08-09 15:41:20.138
*** SESSION ID:(1911.53519) 2013-08-0915:41:20.138
*** CLIENT ID:() 2013-08-09 15:41:20.138
*** SERVICE NAME:(tsdb3180.develop)2013-08-09 15:41:20.138
*** MODULE NAME:(JDBC Thin Client)2013-08-09 15:41:20.138
*** ACTION NAME:() 2013-08-09 15:41:20.138
Dump continued from file:/u01/app/oracle/diag/rdbms/tserpdb/tserpdb/trace/tserpdb_ora_28329.trc
ORA-03137: TTC protocol internal error :[12333] [19] [3] [14] [] [] [] []
========= Dump for incident 60746 (ORA 3137[12333]) ========
*** 2013-08-09 15:41:20.139
dbkedDefDump(): Starting incident defaultdumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for thissession (sql_id=35tr4jfq0x3jw) -----
select mpzone0_.ZONEID as ZONEID83_0_,mpzone0_.AREACODE as AREACODE83_0_, mpzone0_.CARDTYPE as CARDTYPE83_0_,mpzone0_.city as city83_0_, mpzone0_.province as province83_0_ fromIAGENT.MPZONE mpzone0_ where mpzone0_.ZONEID=:1
----- Call Stack Trace -----
调用十六进制的调用条目参数值
位置类型点(? 表示可疑值)
-------------------- ---------------------------- ----------------------------
skdstdst()+36 调用 kgdsdst() 000000000 ?0000000000 ?
7FFF91403248 ?000000001 ?
000000001 ?000000002 ?
...
__libc_start_main() 调用 main() 000000002 ?7FFF91414458 ?
+244 000000001 ?000000000 ?
009B910C0 ?000000000 ?
_start()+36 呼叫 __libc_start_main() 000A0AF38 ?000000002 ?
7FFF91414448 ?000000000 ?
009B910C0 ?000000002 ?
...
---------------------二进制堆栈转储---------------------
========== FRAME [1] (skdstdst()+36 ->kgdsdst()) ==========
由帧指针定义0x7fff91407b00 和 0x7fff91407af0
呼叫类型: 呼叫错误 信号: 无组件: (空)
RDI 0000000000000000 RSI 000000000000000RDX 00007FFF91403248
RCX 0000000000000001 R8 0000000000000001 R900000000000000002
RAX 0000000000000000 RBX 0000000000000003RBP 00007FFF91407B00
R10 00007FFF913FFA80 R11 00000000000000000R12 0000000000000003
R13 0000000000000002 R14 00000000000000000R15 0000000000000001
RSP 00007FFF91407B00 RIP 0000000006772B38
从 0x7fff91407af0 转储到 0x7fff91407b00
7FFF91407AF0 91407B00 00007FFF 06772B3D00000000 [.@.....=+w.....]
========== FRAME [2] (ksedst1()+98 ->skdstdst()) ==========
由帧指针定义0x7fff91407bb0 和 0x7fff91407b00
呼叫类型: 呼叫错误 信号: 无组件: KSE
1.3 Java 错误
org.springframework.transaction.TransactionSystemException:无法提交 Hibernate transaction;nested exception isorg.hibernate.TransactionException: JDBC commit failed
org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:660)
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:394)
.
.
.
java.sql.SQLRecoverableException:无需从套接字读取更多数据
oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1200)
oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1155)
oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:279)
oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
oracle.jdbc.driver.T4C7Ocommoncall.doOCOMMIT(T4C7Ocommoncall.java:75)
oracle.jdbc.driver.T4CConnection.doCommit(T4CConnection.java:558)
oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3674)
oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3680)
org.apache.tomcat.dbcp.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334)
org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:211)
org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:166)
二. 解决方法
在MOS上搜了一下,该问题与Bug9445675 非常像。
错误9445675使用端到端指标时无需从套接字读取更多数据
此错误确实会影响 JDBC 驱动程序。当满足以下所有条件时,此错误可能是原因:
1) 您正在使用 10.1.x.x 或 11.2.0.1 JDBC 驱动程序;该错误不会影响驱动程序的 10.2.x.x 或 11.1.x.x 版本,也不会影响版本 11.2.0.2 或更高版本
2) 您在 Java 代码中使用端到端
3) 服务器端 ORA-3137[12333] 错误伴随着客户端 Java 异常“不再有数据要从套接字读取”
此 bug 已在 JDBC 驱动程序及更高版本的 11.2.0.2 版本中修复。
而当前版本的JDBC Driver 也是:11.2.0.1.0。 所以将JDBC DRIVER升级到11.2.0.2 之后,故障解决。
参考MOS:
了解和诊断 ORA-00600[12333] ORA-3137 [12333] 错误 (文档 ID 389713.1)
ORA-03137 使用 JDBC 驱动程序的 TTC 协议内部错误 [12333] (文档 ID 752297.1)
解决 ORA-3137 [12333] 错误使用 Oracle JDBC 驱动程序时遇到的错误 (文档 ID1361107.1)
以上是关于Oracle ORA-03137: TTC protocol internal error : [12333] 故障分析的主要内容,如果未能解决你的问题,请参考以下文章
oracle 11.2.0.1 for windows server2008r2告警ORA-03137
ORA-03137 - ORA-12592 TNS:BAD PACKET OR ORA-3137 故障处理