遭遇cursor:pin x等待事件定位阻塞會話診斷過程

wxjzqym發表於2013-04-13

環境描述: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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章