您好,欢迎访问一九零五行业门户网

ORA-03137: TTC 协议内部错误: [12333]

oracle数据库版本为11.2.0.1,操作系统centos release 5.9,详细的报错信息如下:ora-03137: ttc 协议内部错误: [12333]
【1】问题背景:oracle数据库版本为11.2.0.1,操作系统centos release 5.9,详细的报错信息如下:
dump file /data/oracle/diag/rdbms/db01/db01/incident/incdir_70215/db01_ora_17588_i70215.trc
oracle database 11g enterprise edition release 11.2.0.1.0 - 64bit production
with the partitioning, olap, data mining and real application testing options
oracle_home = /data/oracle/oracle11
system name:    linux
node name:    db01
release:    2.6.18-348.el5
version:    #1 smp tue jan 8 17:53:53 est 2013
machine:    x86_64
instance name: db01
redo thread mounted by this instance: 1
oracle process number: 52
unix process pid: 17588, image: oracle@db01 
*** 2014-06-20 22:33:42.577
*** session id:(204.33501) 2014-06-20 22:33:42.577
*** client id:() 2014-06-20 22:33:42.577
*** service name:(sys$users) 2014-06-20 22:33:42.577
*** module name:() 2014-06-20 22:33:42.577
*** action name:() 2014-06-20 22:33:42.577
dump continued from file: /data/oracle/diag/rdbms/db01/db01/trace/db01_ora_17588.trc
ora-03137: ttc 协议内部错误: [12333] [32] [49] [50] [] [] [] [] 
========= dump for incident 70215 (ora 3137 [12333]) ======== 
*** 2014-06-20 22:33:42.600
dbkeddefdump(): starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- current sql statement for this session (sql_id=6v8rd0sq5a8m3) -----
select count(t.fd_id) as count from sys_notify_todo_done_info t inner join
(select distinct(sysnotifyt1_.fd_subject) fd_subject,max(sysnotifyt0_.fd_id) as fd_id
,sysnotifyt1_.fd_app_name,sysnotifyt1_.fd_type,sysnotifyt1_.fd_create_time
from sys_notify_todo_done_info sysnotifyt0_ inner join sys_notify_todo sysnotifyt1_
on sysnotifyt0_.fd_todoid=sysnotifyt1_.fd_id
where (sysnotifyt0_.fd_elementid = :1)
group by sysnotifyt1_.fd_subject,sysnotifyt1_.fd_app_name,sysnotifyt1_.fd_type,sysnotifyt1_.fd_create_time) f on t.fd_id = f.fd_id
----- call stack trace -----
calling              call    entry                argument values in hex     
location            type    point                (? means dubious value)   
-------------------- -------- -------------------- ---------------------------- 
*** 2014-06-20 22:33:42.834
skdstdst()+36        call    kgdsdst()            000000000 ? 000000000 ?
                                                  7fff5bcf02b8 ? 000000001 ?
                                                  7fff5bcf47b8 ? 000000000 ?
ksedst1()+98        call    skdstdst()          000000000 ? 000000000 ?
                                                  7fff5bcf02b8 ? 000000001 ?
                                                  000000000 ? 000000000 ?
ksedst()+34          call    ksedst1()            000000000 ? 000000001 ?
                                                  7fff5bcf02b8 ? 000000001 ?
【2】问题的解决方法
metalink上面居然没有发现症状一样的问题,关于ora-03137的错误,问题有很多,常见的问题有jdbc、绑定变量窥视、oracle的bug等,metalink也提供了一系列的排查方法,具体如下:
2.1 绑定变量的窥视
解决方法:sql> alter system set _optim_peek_user_binds=false;
弊端:关闭绑定变量的窥视,会导致当sql语句使用绑定变量的时候,产生的执行计划可能会出现不准,在生产环境中要长期关闭该特性需要认真测试;
  2.2 更新数据库最新的psu,当通过禁用绑定变量后数据库不再报错,可以应用每个数据库最新的psu。或者当禁用绑定变量的时候也继续报错,也可以考虑应用psu进行测试;
以下是相关的psu信息:
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
  2.3 更新数据库到11.2.0.3这个版本
在oracle 11.2.0.3这个版本中可以解决所有的ora-3137的错误;
2.4 联系oracle support解决这个问题 经过以上操作,你都踩到这个地雷了,说明楼主平时烧香少,,需要联系oralce的大神么出手;
【3】总结:经过验证发现运行alter system set _optim_peek_user_binds=false后报错就消失了;
其它类似信息

推荐信息