zoukankan      html  css  js  c++  java
  • 数据库hang住如何收集信息

    数据库hang的时候,建议尽量收集以下信息:

    1.hanganalyze和systemstate dumps

    2.AWR报告

    3.最近的RDA

    如果是CDB环境,要确认是CDB级别的hang还是PDB级别的hang。如果是PDB级别的hang,只需要收集PDB的信息。如果无法确认,建议收集一下CDB的信息。

    hanganalyze:确认数据库是否真的hang或只是运行慢。提供了hang涉及的所有进程信息。

    systemstate dump:收集数据库中所有进程正在做什么。

    如果不能登陆,使用sqlplus -prelim '/as sysdba'登陆

    从11.2.0.2起,使用"sqlplus -prelim"登陆后,hanganalyze不再有内容输出,因为需要一个进程状态对象和一个会话状态对象。所以执行hanganalyze分析后,只是显示执行成功。如下示例:

    SQL> oradebug hanganalyze 3
    Statement processed.
    

    并且trace文件中会包含以下内容:

    HANG ANALYSIS:
    
    ERROR: Can not perform hang analysis dump without a process state object and a session state object.
    ( process=(nil), sess=(nil) )
    

    1.非RAC环境
    执行hanganalyze分析(有时候可能只是运行较慢,并非hang了,所以键值执行两次hanganalyze)

    sqlplus '/as sysdba'
    oradebug setmypid
    oradebug unlimt
    oradebug hanganalyze 3   #level 3表示收集hang chain中涉及的所有进程的栈信息
    --等一分钟后再次执行hanganalyze分析
    oradebug hanganalyze 3
    oradebug tracefile_name
    

    执行systemstate dump分析

    sqlplus '/as sysdba'
    oradebug setmypid
    oradebug unlimit
    oradebug dump systemstate 266
    oradebug dump systemstate 266
    oradebug tracefile_name
    

    通常是hanganalyze和systemstate dump一起做:

    sqlplus '/as sysdba'
    oradebug setmypid
    oradebug unlimt
    oradebug hanganalyze 3
    --等一分钟后再次执行hanganalyze分析
    oradebug hanganalyze 3
    oradebug dump systemstate 266
    oradebug dump systemstate 266
    oradebug tracefile_name
    

    2.RAC环境
    在RAC环境,会在每个实例的diag trace目录下创建dump文件

    RAC10G,使用setmypid

    sqlplus '/as sysdba'
    oradebug setmypid
    oradebug unlimit
    oradebug -g all hanganalyze 3 
    oradebug -g all hanganalyze 3 
    oradebug -g all dump systemstate 258
    oradebug -g all dump systemstate 258
    

    在RAC11G环境,因为有两个bug(bug 11800959 、bug 11827088),导致执行hanganalyze和systemstate dump时,使用266、267级别时成本很高。所以在没有安装这两个补丁前,建议慎用。在11.2.0.3中补丁已被修复。

    RAC11G,如果已经安装了上面的两个补丁:

    sqlplus '/as sysdba'
    oradebug setorapname reco
    oradebug unlimit
    oradebug -g all hanganalyze 3
    oradebug -g all hanganalyze 3
    oradebug -g all dump systemstate 266
    oradebug -g all dump systemstate 266
    

    RAC11G,如果没有安装了上面的两个补丁:

    sqlplus '/as sysdba'
    oradebug setorapname reco
    oradebug unlimit
    oradebug -g all hanganalyze 3
    oradebug -g all hanganalyze 3 
    oradebug -g all dump systemstate 258
    oradebug -g all dump systemstate 258
    
  • 相关阅读:
    CentOS中JAVA_HOME的环境变量设置
    Macserver服务更新经常使用的几个shell命令
    一个技术派创业者的反思
    巴斯卡三角形
    iOS中基于 Socket 的 C/S 结构网络通信(中)
    poj 3267 The Cow Lexicon (动态规划)
    Android入门:短信和拨打电话
    HDUOJ--4888--Redraw Beautiful Drawings【isap】网络流+判环
    Dynamics CRM 2015 New Feature (9): Services Changes
    Class 找出一个整形数组中的元素的最大值
  • 原文地址:https://www.cnblogs.com/abclife/p/5381526.html
Copyright © 2011-2022 走看看