转载

使用oradebug dump hanganalyze 分析oracle hang系列二

背景

   基于上文:使用oradebug dump hanganalyze分析oracle hang系列一,http://blog.itpub.net/9240380/viewspace-1823479/,继续熟悉TRACE FILE内容。


结论

1,DUMP FILE第三部分的构成
State of ALL nodes
([nodenum]/cnode/sid/sess_srno/session/ospid/state/[adjlist]):
[9]/1/10/1/0xdcba9740/10574/NLEAF/[31]


2,state列暂时共发现如下3个值
NLEAF


SINGLE_NODE


LEAF_NW


3,state列3个值的含义
NLEAF表明等待会话,而LEAF_NW表明持锁会话


SINGLE_NODE它不等待任何会话也不阻塞任何会话


而且如果state值为NLEAF,adjlist列会有值,这个值到底是什么含义呢?


4,如果state值为NLEAF,adjlist列会有值,这个值到底是什么含义呢?


我们随机挑出相关匹配记录,找出它们的规律,分析adjlist的含义,可见NLEAF后面的adjlist等于持锁会话sid+1,也就是说用adjlist-1就是持锁会话的sid,直接可以找到持锁会话的SID


5,
经过分析第1列即nodenum不是对应chain的编号,那么它是什么呢
经过对比分析,第一列nodenum其实就是一个顺序编号,不过它是和第3列sid对应起来,就是说下面的记录基于sid列的值进行升序排序,每行产生一个顺序编号,就是第一列nodenum的值


6,关于第一部分的构成含义,将在下文进行学习


测试


1,了解下state列不同值的含义


State of ALL nodes
([nodenum]/cnode/sid/sess_srno/session/ospid/state/[adjlist]):
[9]/1/10/1/0xdcba9740/10574/NLEAF/[31]


2,state列从目前的TRACE FILE共有


NLEAF


SINGLE_NODE


LEAF_NW




3,下面我们依次来看,先看NLEAF


([nodenum]/cnode/sid/sess_srno/session/ospid/state/[adjlist]):
[9]/1/10/1/0xdcba9740/10574/NLEAF/[31]


其上对应的chain




由上定位到如下
[31]/1/32/9465/0xdcb699a0/6664/LEAF_NW/


另启一路分析
[41]/1/42/10233/0xdcb4c940/6724/NLEAF/[204]


[204]/1/205/9696/0xdc9737f0/6439/LEAF_NW/


经过分析第1列即nodenum不是对应chain的编号,那么它是什么呢
经过对比分析,第一列nodenum其实就是一个顺序编号,不过它是和第3列sid对应起来,就是说下面的记录基于sid列的值进行升序排序,每行产生一个顺序编号,就是第一列nodenum的值
([nodenum]/cnode/sid/sess_srno/session/ospid/state/[adjlist]):
[9]/1/10/1/0xdcba9740/10574/NLEAF/[31]
[11]/1/12/1/0xdcba3a60/10578/SINGLE_NODE/
[28]/1/29/10069/0xdcb724f0/6728/NLEAF/[204]
[31]/1/32/9465/0xdcb699a0/6664/LEAF_NW/
[32]/1/33/11792/0xdcb66b30/6612/NLEAF/[204]
[33]/1/34/3/0xdcb63cc0/10707/SINGLE_NODE/
[38]/1/39/9453/0xdcb55490/6754/NLEAF/[204]
[39]/1/40/8844/0xdcb52620/6789/NLEAF/[204]
[41]/1/42/10233/0xdcb4c940/6724/NLEAF/[204]
[43]/1/44/11098/0xdcb46c60/6785/NLEAF/[204]
[45]/1/46/10603/0xdcb40f80/6716/NLEAF/[204]
[48]/1/49/10605/0xdcb38430/6387/NLEAF/[195]
[50]/1/51/10173/0xdcb32750/6584/NLEAF/[204]
[53]/1/54/10303/0xdcb29c00/6626/NLEAF/[204]
[55]/1/56/11968/0xdcb23f20/6722/NLEAF/[204]
[57]/1/58/10957/0xdcb1e240/6668/NLEAF/[124]
[60]/1/61/10526/0xdcb156f0/6421/NLEAF/[204]
[66]/1/67/9091/0xdcb04050/6656/NLEAF/[124]
[67]/1/68/10357/0xdcb011e0/6445/NLEAF/[204]
[68]/1/69/11059/0xdcafe370/6602/NLEAF/[31]
[71]/1/72/10284/0xdcaf5820/6777/NLEAF/[204]
[73]/1/74/10061/0xdcaefb40/6349/NLEAF/[31]
[75]/1/76/9182/0xdcae9e60/6604/NLEAF/[204]
[76]/1/77/9500/0xdcae6ff0/6742/NLEAF/[204]
[77]/1/78/11564/0xdcae4180/6797/NLEAF/[204]
[78]/1/79/10481/0xdcae1310/6326/NLEAF/[204]


NLEAF表明等待会话,而LEAF_NW表明持锁会话


SINGLE_NODE它不等待任何会话也不阻塞任何会话


而且如果state值为NLEAF,adjlist列会有值,这个值到底是什么含义呢?


我们随机挑出几条相关记录,找相它们的规律,分析adjlist的含义,可见NLEAF后面的adjlist等于持锁会话sid+1,也就是说用adjlist-1就是持锁会话的sid,直接可以找到持锁会话的SID
([nodenum]/cnode/sid/sess_srno/session/ospid/state/[adjlist]):
[9]/1/10/1/0xdcba9740/10574/NLEAF/[31]




Chain 1:
-------------------------------------------------------------------------------
    Oracle session identified by:
    {
                instance: 1 (guowang.guowang)
                   os id: 10574
              process id: 10, oracle@seconary (DBW0)
              session id: 10
        session serial #: 1
    }
    中间略
    and is blocked by
 => Oracle session identified by:
    {
                instance: 1 (guowang.guowang)
                   os id: 6664
              process id: 91, oracle@seconary (J063)
              session id: 32  --即为adjlist+1
        session serial #: 9465




[43]/1/44/11098/0xdcb46c60/6785/NLEAF/[204]




Chain 16:
-------------------------------------------------------------------------------
    Oracle session identified by:
    {
                instance: 1 (guowang.guowang)
                   os id: 6785
              process id: 174, oracle@seconary (J144)
              session id: 44
        session serial #: 11098
    }
    is waiting for 'buffer busy waits' with wait info:
    {
                      p1: 'file#'=0x1
                      p2: 'block#'=0x15ab9
                      p3: 'class#'=0x1
            time in wait: 0.013613 sec
           timeout after: never
                 wait id: 56
                blocking: 0 sessions
             current sql:
中间略
  and is blocked by 'instance: 1, os id: 6439, session id: 205',    --即为adjlist+1         


[57]/1/58/10957/0xdcb1e240/6668/NLEAF/[124]
Chain 4:
-------------------------------------------------------------------------------
    Oracle session identified by:
    {
                instance: 1 (guowang.guowang)
                   os id: 6668
              process id: 98, oracle@seconary (J070)
              session id: 58
        session serial #: 10957
    }
   中间略
    and is blocked by
 => Oracle session identified by:
    {
                instance: 1 (guowang.guowang)
                   os id: 6648
              process id: 80, oracle@seconary (J052)
              session id: 125  ----即为adjlist+1   
        session serial #: 10219
    }


正文到此结束
Loading...