技术开发 频道

使用system state dump分析mutex等待

  继续往后查看:

       KGX Atomic Operation Log 0x4543ce390  
       Mutex 0x3ff3c3d28(
1487, 0) idn de12d336 oper EXCL  
       Cursor Pin uid
1487 efd 0 whr 1 slp 0  
       opr
=3 pso=0x454daaa50 flg=0  
       pcs
=0x3ff3c3ca8 nxt=0x41720aca0 flg=35 cld=0 hd=0x455d0dda8 par=0x3ff3c4650  
       ct
=0 hsh=0 unp=(nil) unn=0 hvl=ff3c4448 nhv=1 ses=0x45181f760  
       hep
=0x3ff3c3d28 flg=80 ld=1 ob=0x3ff3c3868 ptr=0x412040780 fex=0x41203faf0  

  上面一段信息表明,正是1487这个会话以EXCLUSIVE方式持有idn=de12d336的这个mutex,这正是1471会话正需要以SHARE方式获取的Mutex。

      KGX Atomic Operation Log 0x45a2b7908  
       Mutex 0x44b764498(
0, 1) idn 7fff00005336 oper GET_EXCL  
       Cursor Stat uid
1487 efd 8 whr 3 slp 28652  
       oper
=OPERATION_DEFAULT pt1=(nil) pt2=(nil) pt3=(nil)  
       pt4
=(nil) u41=0 stt=0  

  上面一段信息表明,1487这个会话正在以EXCLUSIVE请求的mutex是idn=7fff00005336,Mutex类型是Cursor Stat。Cursor Stat类型的EXCLUSIVE方式请求通常是需要更新cursor的统计信息。而以SHARE方式请求通常是查询cursor的统计信息,比如说查询v$sqlstat视图。注意这里GET_EXCL表示正在以EXCLUSIVE方式请求获取(持有)mutex,而EXCL表示已经以EXCLUSIVE方式持有mutex。延伸开来,GET_SHRD表示请求SHARE方式的mutex,SHRD表示以SHARE方式持有mutex。REL_SHRD表示正在释放SHARE方式持有的mutex,也就是递减引用计数。

  那么,接下来我们就要寻找是哪个会话持有了idn=7fff00005336的mutex。查找’idn 7fff00005336 oper‘,找到如下内容:

       KGX Atomic Operation Log 0x45955b2f0  
       Mutex 0x44b764498(
0, 1) idn 7fff00005336 oper SHRD  
       Cursor Stat uid
1497 efd 7 whr 6 slp 0  
       oper
=OPERATION_DEFAULT pt1=(nil) pt2=(nil) pt3=(nil)  
       pt4
=(nil) u41=0 stt=0  
0
相关文章