暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

ORA-03137: TTC 协议内部错误

章芋文 2019-06-19
2342

问题描述

alert中记录如下:

Sat Jan 11 14:22:10 2014 
Errors in file /u01/app/oracle/diag/rdbms/trace/_ora_26762.trc  (incident=136238): 
ORA-03137: TTC 协议内部错误: [12333] [7] [120] [114] [] [] [] [] 
Incident details in: /u01/app/oracle/diag/rdbms/incident/incdir_136238/_ora_26762_i136238.trc 
Sat Jan 11 14:22:12 2014 
Trace dumping is performing id=[cdmp_20140111142212] 
Sat Jan 11 14:22:14 2014 
Sweep [inc][136238]: completed 
Sweep [inc2][136238]: completed


专家解答

在MOS上查看文档(Doc ID 1361107.1),确定在使用JDBC连接数据库时,可能有多种原因引起的BUG,结合本系统数据库版本,主要有以下2个原因: 
a)、部分版本JDBC驱动引起; 
b)、使用绑定变量时引起(trace文件中显示的确使用了绑定变量)。 
解决方法有以下四种: 
a)、禁用绑定变量窥视 
SQL> alter system set "_optim_peek_user_binds"=false; 
此方法不一定有效,需要观察,如果不能解决问题,考虑下面的方法。 
b)、打上Patch 1241938等补丁; 
c)、升级到11.2.0.3,上面所有提到的BUG都被修复; 
d)、尝试更换不同版本的JDBC驱动来避免这个问题。 
下面是mos中的信息: 
Known Database IssuesUnpublished Bug 8625762 - ORA-3137 [12333] due to bind data not read from wire 
This bug affects RDBMS version lower than version 11.2.  It is fixed in version 11.2 of the database. 

It can occur intermittently, due to bind data being left unread database connection.  This is a bind peeking bug. 

This bug is also known for causing 
ORA-3137: TTC protocol internal error : [1010] [] [] [] [] [] [] [] 
  
Unpublished Bug 9703463 - ORA-3137 [12333] or ORA-600 [kpobav-1] When Using Bind Peeking 
This bug affects versions 11.1.0.6, 11.1.0.7, and 11.2.0.1 of the RDBMS.  It is fixed in version 11.2.0.2 of the database. 

It can also occur intermittently; similarly to unpublished Bug:8625762, this is a bind peeking bug. 
  
Unpublished Bug:9243912 - Additional diagnostics for ORA-3137 [12333] / OERI:12333 
This bug affects versions of the RDBMS lower than version 11.2.0.2.  It is fixed in version 11.2.0.2 of the database. 

This bug addresses scenarios in which the ORA-3137 [12333] error occur bind issues during the client/server communication process.  When this particular bug is fixed, the result may be the uncovering of an additional, more descriptive error:  ORA-600 [kpobav-1] 
  
Bug 7390077  ORA-03137: TTC PROTO INTERNAL ERROR: [12333] [8] [80] [65] 
This bug affects the RDBMS 11.1.0.6 and is resolved with RDBMS 11.1.0.7. 

typical errors: 
ORA-03137: TTC protocol internal error : [12333] [10] [83] [74] [] [] [] [] 
ORA-03137: TTC protocol internal error : [12333] [7] [120] [108] [] [] [] [] 

example stack: 
ORA-03137: TTC protocol internal error : [12333] [7] [120] [108] [] [] [] [] 
----- Current SQL Statement for this session (sql_id=c0czhbm4hcz98) ----- 
DELETE FROM PORTAL_CONCURRENT_USER_SCRATCH 
WHERE LAST_LOGIN < :intervalStartDate 


----- Call Stack Trace ----- 
calling call entry argument values in hex 
location type point (? means dubious value) 
-------------------- -------- -------------------- ---------------------------- 
skdstdst()+002c bl 105e2771c 
ksedst1()+0064 bl 101fad134 
ksedst()+0028 bl ksedst1() 60000B8104C4A30 ? 
600000002050032 ? 
dbkedDefDump()+07fc bl 101fae954 
ksedmp()+0048 bl 101fad130 
opiierr()+0168 bl ksedmp() 000000000 ? 
opitsk()+1344 bl 103ec9a5c 
opiino()+09a0 bl opitsk() 110098B40 ? 000000000 ? 
opiodr()+0b48 bl 103ec7a30 
opidrv()+0440 bl opiodr() 3C61672F72 ? 41032E668 ? 
This problem does not happen if the JDBC 10.2.0.3 driver is used but is nevertheless considered a database bug. 

The following bugs have been marked as potential duplicates of this case: 
Bug 7573690 Bug 7607470 Bug 8490909 
  
Unpublished Bug 9373370  - Data Base Returns Wrong CURSORID When There Is an ORA-1013 
This bug affects the 10.2, 11.1, 11.2.0.1, and 11.2.0.2 databases.  It is discussed in the following note: 
Note 9373370.8 Bug 9373370 - The wrong cursor may be executed by JDBC thin following a query timeout / ORA-3137 [12333] 
While the bug primarily manifests in ORA-1006 or ORA-1008 errors, the problem may also result in ORA-600 [12333] or ORA-3137 [12333] errors appearing on the server side. 
  
  
Known JDBC IssuesBug 9445675  NO MORE DATA TO READ FROM SOCKET WHEN USING END-TO-END METRICS 
This bug does affect the JDBC driver.  This bug may be the cause when all of the following conditions are met: 

  1. You are using the 10.1.x.x or the 11.2.0.1 JDBC driver; the bug does not affect 10.2.x.x, or 11.1.x.x versions of the driver, nor versions 11.2.0.2 or above
  2. You are using end-to-end metrics in your Java code 
  3. The server side ORA-3137 [12333] error is accompanied by the client side Java exception "No more data to read from socket" 

This bug is fixed in the 11.2.0.2 version of the JDBC driver and above.  It is discussed in the following notes: 
Note 9445675.8 Bug 9445675 - "No more data" / ORA-3137 using end to end metrics with JDBC Thin 
Note 1081275.1 "java.sql.SQLRecoverableException: No more data to read from socket" is Thrown When End-to-end Metrics is Used 
  

  
  
Troubleshooting Approaches1.  Disable Bind Peeking 
A common thread through the database bugs listed above is that the problem does not occur if bind peeking is shut off.  Temporarily disabling bind peeking allows you to confirm whether this is the case in your environment as well.   

This can be done dynamically: 
SQL> alter system set "_optim_peek_user_binds"=false; 


If the ORA-3137 [12333] error no longer reproduces after disabling bind peeking, then in most cases, the problem is due to one of the database bugs listed above, or due to some variant of one of those bugs. 
Note:  disabling bind peeking can have an impact on the database.  Specifically, it can alter the explain plan for some queries that use bind variables.  This should be taken into account, particularly before considering the use of this option as a long-term workaround. 
  
2.  Apply Relevant Database Patches 
Whenever possible, the recommended solution when running a database version 11.1.0.7 is to apply the most recent PSU patch. 
PSU 11.1.0.7.8 Patch 12419384 includes Patch:9703463. 

For 11.1.0.7, Patch 9243912 can be applied on top of 11.1.0.7.8 ( no conflict). 

Patch:9703463  can also be applied individually but requires PSU 11.1.0.7.6  

Patch:8625762  may also be applicable to databases version 11.1.0.7 

If you have disabled bind peeking as a test, and the error no longer reproduces, then applying one of these patches would be the next step. 

Alternatively, if you are unable to disable bind peeking for some reason, you may consider applying one of these patches as a diagnostic test in itself, to confirm whether the patch fixes the problem for you. 
  
3.  Upgrade the Database to Version 11.2.0.3 
All of the above bugs are fixed in version 11.2.0.3 of the database. 
  
4.  Contact Oracle Support if the problem still persists 
For JDBC connections that have resulted in the ORA-3137 error, the above database-centric approaches have resolved the issue almost all of the time.  If disabling bind peeking has no effect and the ORA-3137 [12333] still occurs, please contact Oracle Support, as this is a relatively rare scenario in which further investigation is needed.

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论