zoukankan      html  css  js  c++  java
  • 如何处理会话等待事件与ORA-21780故障

    关注我们,下载更多资源

    640?wx_fmt=jpeg

    作者 | 张维照,Oracle ACEA,2006年起从事数据库管理工作,2009年转 Oracle,从事过多套 TB 级省级工商、医疗、交通、人社、电信运营等数据库维护优化工作,擅长Oracle 数据库性能问题的分析与解决,Oracle数据库故障分析,Oracle数据库升级迁移。


    case 1


    之前有套 11.2.0.3 RAC on HPUX 数据库环境突然出现较高的 latch: free wait event, 该 event 在 10G 以后的版本较为少见(已经细化为具体latch) ,  通过 p1 或者 p2 值可以确认具体 latch. 下面记录一下这个问题。


    640?wx_fmt=png

    640?wx_fmt=png


    注意:
    具体的 latch 是“transaction branch allocation” 常见于多个新会话logon开始新trasactions时。


    640?wx_fmt=png


    收集该时段AWR
    640?wx_fmt=png


    640?wx_fmt=png 

    640?wx_fmt=png

    注意:

    注意latch free, transaction branch allocation占用较高的db time, latch 位置主要是ksupuc(kernel service user processes push user call), 和ktcsbr(kernel transaction control component state branch), 同时每秒logon在10, 每秒事务在860左右, 是一个较忙的数据库, 同时CPU 使用率高达98%。 是否在是CPU 较高时触发了某个BUG? 在MOS中查找发现命中一Bug 20130575 .


    该BUG在影响11.2.0.3 、11.2.0.4 、12cR1 ,在12c R2版本中修复,在一些版本中提供one off patch, 但是在当前平台版本没有相应的bug. 因版本已过服务期,无法提供新的BUG. 该问题会在经过一段时间后自愈,还会间隔出现, 属于一种程序代码缺陷,没有其它有效的手段, 我分析该bug 应该于cpu high usage 有间接关系,于时建议部分应用调整到了另一节点, 规避该问题,调整后CPU降到70%左右后,该问题没有再出现。


    case 2


    问题背景:此问题发生在 Oracle RAC 环境11.2.0.3,db 警报日志显示SMON频繁引发 Ora-21780故障,这些错误无法清除某些对象时,这篇文章简单记录了这个案例,以及如何修复这个故障。


    #db警报日志

    Fri Nov 02 09:55:59 2018
    Errors in file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_smon_12872.trc:
    ORA-21780: Maximum number of object durations exceeded.
    Errors in file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_smon_12872.trc:
    ORA-21780: Maximum number of object durations exceeded.
    Errors in file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_smon_12872.trc:
    ORA-21780: Maximum number of object durations exceeded.
    Errors in file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_smon_12872.trc:
    ORA-21780: Maximum number of object durations exceeded.
    Errors in file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_smon_12872.trc:
    ORA-21780: Maximum number of object durations exceeded.
    Errors in file /oracle/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_smon_12872.trc:
    ORA-21780: Maximum number of object durations exceeded.


    注:

    Rais Ora-21780

    #Smon跟踪文件

    *** 2018-11-02 09:59:27.930
    SMON: following errors trapped and ignored:
    ORA-21780: Maximum number of object durations exceeded.
    
    *** 2018-11-02 09:59:29.468
             Drop transient type:   SYSTPeJCgNOyAXhHgVEgPz2hhrg==
    
    *** 2018-11-02 09:59:29.468
    SMON: following errors trapped and ignored:
    ORA-21780: Maximum number of object durations exceeded.
    
    *** 2018-11-02 09:59:34.478
             Drop transient type:   SYSTPeJCgNOyAXhHgVEgPz2hhrg==
    
    *** 2018-11-02 09:59:34.478
    SMON: following errors trapped and ignored:
    ORA-21780: Maximum number of object durations exceeded.
             Drop transient type:   SYSTPeJCgNOyAXhHgVEgPz2hhrg==


    注:
    似乎要多次删除同一个对象,对象是名为“
    SYSTPeJCgNOyAXhHgVEgPz2hhrg=”的瞬态类型,此问题似乎只发生在RAC环境中,默认清理时间为12小时。


    什么是“瞬态类型”对象?

    瞬态对象:在名称上,瞬态对象是在应用程序期间任何时候创建和销毁的临时对象,其寿命不超过应用程序的寿命。不能将它们转换为持久对象,因为这些对象仅用于存储临时值以供计算。


    对象类型可用作:

    1.Oracle表中列的数据类型。
    2.对象实例在PL/SQL程序单元中声明期间的数据类型。
    3.另一个对象或集合类型的属性。
    4.程序和函数签名中的形式参数。
    5.函数的返回类型。


    提示:从Oracle数据库第12c版和第12.2版开始,可以在活动数据保护实例上创建瞬态类型,条件是:
    实时应用程序是在活动数据保护程序上运行的,而逻辑待机时间并不远远落后于主站(通常是秒的顺序)。


    解决办法:

    1]首先,您可以禁用以前推荐的事件,因为我们已经有了错误堆栈跟踪:

    $ sqlplus / as sysdba
    alter system set events '21780 trace name context off';
    exit


    [2]第二,请手动删除当前顺泰类型如下:

    $ sqlplus / as sysdba
    SQL> select 'drop type "'||o.name ||'" FORCE; --'||o.owner#||o.ctime
    from obj$ o, type$ t
    where o.oid$ = t.tvoid and
    bitand(t.properties,8388608) = 8388608 and (sysdate-o.ctime) > 0.0007;


    一旦遇到问题,缓冲区缓存Flushing可以解决它。


    注:

    我们可以重新安排这个自动清理每一个小的时间段。例如将其设置为30分钟如下

    $ sqlplus / as sysdba
    alter system set event='22834 trace name context forever, level 30' scope=spfile;
    shut immediate
    startup


    通过设置事件22834,可以防止SMON清理瞬态类型。但是,这会导致瞬态类型增加。


    原创:张维照


    资源下载

    关注公众号:数据和云(OraNews)回复关键字获取

    2018DTCC , 数据库大会PPT

    2018DTC,2018 DTC 大会 PPT

    DBALIFE ,“DBA 的一天”海报

    DBA04 ,DBA 手记4 电子书

    122ARCH ,Oracle 12.2体系结构图

    2018OOW ,Oracle OpenWorld 资料

    PRELECTION ,大讲堂讲师课程资料

    近期文章

    企业数据架构的云化智能重构和变革(含大会PPT)

    Oracle研发总裁Thomas Kurian加盟Google Cloud

    变与不变: Undo构造一致性读的例外情况

    Oracle 18c新特性:动态 Container Map 增强 Application Container 灵活性

    Oracle 18c新特性:Schema-Only 帐号提升应用管理安全性

    Oracle 18c新特性:多租户舰队 CDB Fleet (含PPT)

    为什么看了那么多灾难,还是过不好备份这一关?

    640?wx_fmt=jpeg

  • 相关阅读:
    2008俱乐部高校行之中南民族大学
    [更新]MSDN中Webcast "WPF中的图形系统系列" 课程预告及反馈
    7月20日 武汉.NET俱乐部在线沙龙!
    2007武汉.NET俱乐部沙龙VS2008、WPF、Silverlight
    MSDN新年第一次WebCast总结
    [评]Microsoft Visual Web Developer 2008 Step by Step, Express Edition
    [老爸创作的歌词]我从瓦砾中站起
    [Expert MS IL Assembler]武汉.NET俱乐部在线沙龙与线下聚会
    2008开年大礼:《Application = Code + Markup》中文版面世
    2009武汉.NET俱乐部活动之黄冈站
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312219.html
Copyright © 2011-2022 走看看