• ORA-03137: TTC 协议内部错误: [12333] [4] [49] [51] [] [] [] []


    【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后报错就消失了;

    其实很多时候我们可以规避这个问题的,因为当初在选择数据库版本的时候,当初没有什么经验直接安装了11.2.0.1这个版本,大家都知道R1版本的BUG是比较多的,R2相对来说会稳定很多,但是在选择数据库的时候,也建议不要选小版本为1的,现在我装数据库的时候一般都会选择11.2.0.3这个版本;

  • 相关阅读:
    转 | 禁忌搜索算法(Tabu Search)求解带时间窗的车辆路径规划问题详解(附Java代码)
    Branch and price and cut求解传统VRP问题以及VRPTW问题
    标号法(label-setting algorithm)求解带时间窗的最短路问题(ESPPRC)
    运筹学从何学起?如何快速入门精确式算法?
    转 | 模拟退火算法(SA)和迭代局部搜索(ILS)求解TSP的Java代码分享
    用Python画论文折线图、曲线图?几个代码模板轻松搞定!
    45. 截取“测试数据”后面的内容
    44. 更改oracle字符集编码american_america.zh16gbk 改为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    18. 浏览器关闭页面时弹出“确定要离开此面吗?”
    6. concat_ws用法
  • 原文地址:https://www.cnblogs.com/vinsonLu/p/8662687.html
Copyright © 2020-2023  润新知