继续往后查看:
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
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
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
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