遭遇cursor:pin x等待事件定位阻塞会话诊断过程

环境描述:DB:10.2.0.4.0 /OS:AIX 5.3 (64bit)

问题描述:
1.会话A执行如下命令被挂起
SQL> exec dbms_shared_pool.purge('07000008B4C75210,2298158739','C',1);

2.登陆会话B查看v$session相关信息
SQL> select sid,blocking_session,event,p1,p2raw from v$session where event='cursor: pin X';

       SID BLOCKING_SESSION EVENT                             P1 P2RAW
---------- ---------------- ------------------------- ---------- ----------------
      2016                  cursor: pin X             2298158739 0000000000000001

当前被阻塞会话id为2016,通过blocking_session字段和p2raw字段都无法判断blocker会话id。

3.对当前实例做systemstate level 266并分析dump文件
3.1生产dump文件
SQL> oradebug setmypid
Statement processed.
SQL> oradebug unlimit
Statement processed.
SQL> oradebug dump systemstate 266
Statement processed.
SQL> oradebug tracefile_name
/u01/oracle/diag/rdbms/opdb/opdb1/trace/opdb1_ora_6313.trc

3.2分析dump文件
PROCESS 42:
  ----------------------------------------
  SO: 700000a0c3d2748, type: 2, owner: 0, flag: INIT/-/-/0x00
  (process) Oracle pid=42, calls cur/top: 7000009c1f4bb98/7000009c1f4bb98, flag: (0) -
            int error: 0, call error: 0, sess error: 0, txn error 0
。。。。。。
。。。。。。
    (session) sid: 2016 trans: 0, creator: 700000a0c3d2748, flag: (100041) USR/- BSY/-/-/-/-/-
              DID: 0001-002A-00000792, short-term DID: 0000-0000-00000000
              txn branch: 0
              oct: 47, prv: 0, sql: 7000008d486cf10, psql: 7000009d0360ae0, user: 0/SYS
。。。。。。
。。。。。。
   waiting for 'cursor: pin X' blocking sess=0x0 seq=13163 wait_time=0 seconds since wait started=0
                idn=88fb1e93, value=1, where|sleeps=e000432d5
    这里首先 通过'cursor:pin X'等关键字定位到等待事件的idn号"idn=88fb1e93",然后由idn号找到Mutex相关信息"Mutex 7000008b4736020(0, 1) idn 88fb1e93 oper SHRD"此信息,我们知道cursor:pin X等待事件发生的原因为其他会话对这个cursor对象已经持有了exclusive mutex pin或者是shared mutex pin,从关键字SHRD已经可以判断是后一种情况,那么这时顺藤摸瓜就可以找到对应的PROCESS ID,这个时候你可以选择找到对应的spid将其kill掉,或者找到对应的sid观察其当前的行为再决定是否kill。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20801486/viewspace-758428/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20801486/viewspace-758428/

你可能感兴趣的:(遭遇cursor:pin x等待事件定位阻塞会话诊断过程)