zoukankan      html  css  js  c++  java
  • Oracle Hang Manager

    名词术语
    1.Cross Boundary Hang

      交叉边界hang。在12.1.0.1中,hang manager可以检测database和asm之间的hang。
    2.Deadlock or Closed Chain

      死锁或关闭链条。打破死锁链条的唯一方法是让其中某些会话完成其工作或被终止。
    3.Hang or Open Chain

      hang或开放链条。从hang manager角度讲,hang就是一些会话无法进一步处理工作,这不是死锁或循环链条。hang or open chain有一个根本阻塞者,阻塞了这个链条中的其他所有会话,也包含一个被其它会话阻塞的最终等待者。
    4.Immediate Waiter

      在open chain中,该会话被产生hang的根本会话所阻塞。
    5.Quality of Service (QoS) Management

      QoS(服务质量管理)是数据库中自动的、基于策略的监控整个系统的负载请求的服务。管理应用需要的资源、调整系统配置,保障应用的性能。
    6.Self-Resolved Hang

      自处理的hang。被hang manager检测到的已经不再存在的hang或死锁。

     Hang Manager

    在诊断数据库问题的时候,经常会遇到数据库/进程hang住的问题。对于hang的问题,一般来说,常见的原因有以下两种:
    1.死锁(cycle)。对于这种hang, 除非循环被打破,问题会永远存在。
    2.某个堵塞者(blocker)进程在持有了某些资源后堵塞了其他进程,其它进程无法获取资源。
      可以把blocker分为直接堵塞进程(immediate blocker)和根堵塞进程(root blocker)。而root blocker在通常情况下会处于两种状态。
      (1)根堵塞进程处于空闲状态,对于这种情况,终止这个进程能够解决问题。
      (2)根堵塞进程正在等待某些和数据库无关的资源(例如:等待I/O),对于这种情况,终止这个进程也许能解决问题。但是,从数据库的角度来讲,这已经超出了数据库的范畴。

    Hang Manager是从10.2.0.1被引进的。主要用途是检测和处理hang问题。随着版本的增加,功能也不断的被完善加强。但是,实际上从11.2.0.2开始,Hang Manager才实际开始解决hang问题,通过终止产生hang的根本会话或进程来实现。

     Hang Manager只在RAC数据库中生效。

     默认情况下,hang manager不会终止一个实例或者将实例从集群环境中剔除;也不会自动解决其检测到的hang问题。目前也不能解决ASM hang问题。

    从12.1.0.1开始,如果rac集群中的QoS处于active状态,hang manager会使用QoS提供的附加信息来决定是否应该忽略或者解决一个hang问题。 如果QoS倾向于hang manager解决hang问题,hang manager会比平时使用更少的时间来检测和处理hang问题,而不是延迟处理。

     在12.1.0.1之前,hang只会在数据库内部或者asm中被检测。从12.1.0.1开始,hang manager会检测数据库和asm之间产生的hang。

    当hang manager 解决hang问题时,会在alert日志中给出一个ora-32701事件:

    ORA-32701: Possible hangs up to hang ID=24 detected
    Incident details in: /ee/oracle/oracle_base/diag/rdbms/orcl/orcl1/incident/incdir_1944098/orcl1_dia0_34930694_i1944098.trc
    DIA0 terminating blocker (ospid: 28311778 sid: 3398 ser#: 1) of hang with ID = 24
         requested by master DIA0 process on instance 2
         Hang Resolution Reason: Automatic hang resolution was performed to free a
        critical database process.
         by terminating session sid:3398 with serial # 1 (ospid:28311778)
    

    hang manager的基本步骤

    1.检测阶段(DETECT)

      数据库会分配一部分内存空间用于存放hanganalyze dump信息。这部分内存空间在每个节点的数据库实例上都存在。 该阶段扫描实例的所有本地会话,检测是否有可能hang的会话。 每次扫描被称作一个snap。默认保存3个snap,每个snap间隔32秒,时间间隔由隐含参数"_hang_detection_interval"决定。 一旦检测到一个或多个会话出现在3个snap中(这些会话就被认为可能是hang的会话),就会向master DIA0进程发起REQHM请求,进入HA阶段;如果没有,检测到hang的会话,HM继续保留在该阶段,除了阶段性的进入HAONLY阶段。

    2.HA阶段(Hang Analysis)

      检测到hang的会话后,发起REQHM请求的DIA0进程将所有检测到的会话信息发送给master DIA0进程。 全局的hang analysis被启动,创建wait for graphs(WFGs),这个过程可能会跨节点,找出本地或远程的blocker。本阶段完成后进入下一阶段,分析阶段。

      负责搜集这些dump信息的后台进程是DIA0(这个进程从11g才被引入)。默认情况下每3秒钟搜集本地级别hanganalyze dump, 每10秒搜集全局级别hanganalyze dump 每个实例都会拥有自己的DIA0进程,负责完成本地的hang分析。但是,对于RAC数据库,很多hang的情况会包含多个实例的进程。所以需要一个实例上的DIA0进程作为master,来对多个实例搜集到的信息进行分析。对于11g版本,节点号最小的实例的DIA0进程会成为HM的master进程。当然,在实例级别发生了重新配置后,主(master)DIA0 进程会重新在存在的实例中重新被选举出来

    3.分析阶段(ANALYZE)

      将root waiter和immediate waiter会话信息和Hang Signature Cache(HSC)进行匹配。如果找到匹配的记录,则更新最新的时间和计数;如果没有匹配的,创建一个新的hang记录。完成该阶段后,HM回到检测阶段。 确认阶段是由其它单独参数控制的。

    4.确认阶段(verify)

      被怀疑会话所在的节点会检查这些会话是否还在hang状态,并将信息发送给master DIA0进程。如果这些会话还在,确认该会话是hang的。然后进入victim阶段。

    5.处理阶段(victim)

      如果隐含参数"_HANG_RESOLUTION_SCOPE"值为process,HM会终止会话,如果会话终止失败,就会终止进程;

      如果隐含参数"_HANG_RESOLUTION_SCOPE"值为instance,并且victim是关键的后台进程,该实例会被kill掉。

      

      整体步骤:  

      

      具体步骤:

      

    hang manager信息查看:

    SQL> select * from v$hang_info;
    SQL> select * from v$hang_session_info;
    SQL> select * from gv$hang_statistics;
    
       INST_ID STATISTIC# NAME                                               VALUE
    ---------- ---------- --------------------------------------------- ----------
             1          0 number of deadlocks detected and ignored               0
             1          1 number of hangs detected                               0
             1          2 number of local hangs                                  0
             1          3 number of global hangs                                 0
             1          4 number of transient hangs                              0
             1          5 hangs ignored due to high CPU on root's node           0
             1          6 hangs ignored due to high IO on root's node            0
             1          7 hangs ignored due to application contention            0
             1          8 hangs ignored due to long running operations           0
             1          9 hangs monitored due to archiving issues                0
             1         10 hangs ignored due to archiving issues                  0
             1         11 hangs ignored, blocked by remote database              0
             1         12 hangs ignored due to SQL parsing                       0
             1         13 hangs ignored due to dumping system state              0
             1         14 hangs ignored, instance termination required           0
             1         15 hangs ignored, only one active instance                0
             1         16 number of explicitly resolved hangs                    0
             1         17 number of self-resolved hangs                          0
             1         18 total self-resolved hang time in seconds               0
             1         19 minimum self-resolved hang time in seconds             0
             1         20 maximum self-resolved hang time in seconds             0
             1         21 number of HSC matched hangs                            0
             1         22 hangs resolved due to instance termination             0
             2          0 number of deadlocks detected and ignored               0
             2          1 number of hangs detected                               0
             2          2 number of local hangs                                  0
             2          3 number of global hangs                                 0
             2          4 number of transient hangs                              0
             2          5 hangs ignored due to high CPU on root's node           0
             2          6 hangs ignored due to high IO on root's node            0
             2          7 hangs ignored due to application contention            0
             2          8 hangs ignored due to long running operations           0
             2          9 hangs monitored due to archiving issues                0
             2         10 hangs ignored due to archiving issues                  0
             2         11 hangs ignored, blocked by remote database              0
             2         12 hangs ignored due to SQL parsing                       0
             2         13 hangs ignored due to dumping system state              0
             2         14 hangs ignored, instance termination required           0
             2         15 hangs ignored, only one active instance                0
             2         16 number of explicitly resolved hangs                    0
             2         17 number of self-resolved hangs                          0
             2         18 total self-resolved hang time in seconds               0
             2         19 minimum self-resolved hang time in seconds             0
             2         20 maximum self-resolved hang time in seconds             0
             2         21 number of HSC matched hangs                            0
             2         22 hangs resolved due to instance termination             0
    
    46 rows selected.
    
    SQL> 
    

    相关参数:

    NAME                                               VALUE                          ISDEFAULT ISMOD      ISADJ
    -------------------------------------------------- ------------------------------ --------- ---------- -----
    _hang_analysis_num_call_stacks                     3                              TRUE      FALSE      FALSE
    _hang_base_file_count                              5                              TRUE      FALSE      FALSE
    _hang_base_file_space_limit                        10000000                       TRUE      FALSE      FALSE
    _hang_bool_spare1                                  TRUE                           TRUE      FALSE      FALSE
    _hang_delay_resolution_for_libcache                TRUE                           TRUE      FALSE      FALSE
    _hang_detection_enabled                            TRUE                           TRUE      FALSE      FALSE
    _hang_detection_interval                           32                             TRUE      FALSE      FALSE
    _hang_hang_analyze_output_hang_chains              TRUE                           TRUE      FALSE      FALSE
    _hang_hiload_promoted_ignored_hang_count           2                              TRUE      FALSE      FALSE
    _hang_hiprior_session_attribute_list                                              TRUE      FALSE      FALSE
    _hang_ignored_hang_count                           1                              TRUE      FALSE      FALSE
    _hang_ignored_hangs_interval                       300                            TRUE      FALSE      FALSE
    _hang_int_spare2                                   FALSE                          TRUE      FALSE      FALSE
    _hang_log_verified_hangs_to_alert                  FALSE                          TRUE      FALSE      FALSE
    _hang_long_wait_time_threshold                     0                              TRUE      FALSE      FALSE
    _hang_lws_file_count                               5                              TRUE      FALSE      FALSE
    _hang_lws_file_space_limit                         10000000                       TRUE      FALSE      FALSE
    _hang_monitor_archiving_related_hang_interval      300                            TRUE      FALSE      FALSE
    _hang_msg_checksum_enabled                         TRUE                           TRUE      FALSE      FALSE
    _hang_resolution_allow_archiving_issue_termination TRUE                           TRUE      FALSE      FALSE
    _hang_resolution_confidence_promotion              FALSE                          TRUE      FALSE      FALSE
    _hang_resolution_global_hang_confidence_promotion  FALSE                          TRUE      FALSE      FALSE
    _hang_resolution_policy                            HIGH                           TRUE      FALSE      FALSE
    _hang_resolution_promote_process_termination       FALSE                          TRUE      FALSE      FALSE
    _hang_resolution_scope                             PROCESS                        TRUE      FALSE      FALSE
    _hang_short_stacks_output_enabled                  TRUE                           TRUE      FALSE      FALSE
    _hang_signature_list_match_output_frequency        10                             TRUE      FALSE      FALSE
    _hang_statistics_collection_interval               15                             TRUE      FALSE      FALSE
    _hang_statistics_collection_ma_alpha               30                             TRUE      FALSE      FALSE
    _hang_statistics_high_io_percentage_threshold      15                             TRUE      FALSE      FALSE
    _hang_verification_interval                        46                             TRUE      FALSE      FALSE
    
    31 rows selected.
    
    SQL> 
    
  • 相关阅读:
    OWA or ECP stops working after you install a security update
    【PHP】熟悉php对应的DES相关加解密,与java、C#对接加解密工程
    SOAPUI中文教程使用断言
    【死磕Java并发】深入分析synchronized的实现原理
    【死磕 NIO】— 深入分析Buffer
    【死磕Java并发】内存模型之happensbefore
    【死磕Java并发】Java内存模型之重排序
    【死磕 NIO】— Proactor模式是什么?很牛逼吗?
    【死磕Java并发】—–深入分析volatile的实现原理
    音视频技术应用(14) FFmpeg 转mp4 格式 为yuv, rgb 格式
  • 原文地址:https://www.cnblogs.com/abclife/p/5386253.html
Copyright © 2011-2022 走看看