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 故障处理

Oracle 11.2.0.1的一个Bug,客户端报ORA-03113: 通信通道的文件结尾

oracle安装中文显示方框

使用 ttc 文件的 Css 字体

PDFBox 2.0 和 TTC 字体