遭遇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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle等待事件之cursor:pin S wait on XOracle事件AI
- [20201117]解析cursor pin S等待事件.txt事件
- cursor:pin S wait on X故障診分析AI
- cursor pin S wait on XAI
- cursor: pin S wait on XAI
- 基於等待事件的效能診斷(轉)事件
- 【等待事件】library cache pin事件
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- Cursor Mutex S Waits等待事件引發hangMutexAI事件
- 一次DG故障診斷過程分析
- Oracle診斷事件列表(轉)Oracle事件
- HTTPS會話過程整理HTTP會話
- Library Cache 診斷:Lock, Pin 以及 Load Lock (文件 ID 1548524.1)
- Oracle阻塞會話查詢Oracle會話
- 軟體專案過程診斷與改進建議案例
- 記一次使用gdb診斷gc問題全過程GC
- .記一次使用gdb診斷gc問題全過程GC
- SQLServer如何監控阻塞會話SQLServer會話
- oracle之 redo過高診斷Oracle
- 為什麼sleeping的會話會造成阻塞會話
- UDS診斷之0x11服務
- Solidity事件,等待事件Solid事件
- Oracle:cursor:mutex XOracleMutex
- 為什麼sleeping的會話會造成阻塞(2)會話
- ssl會話建立的過程(原理)是什麼?會話
- 容器內的Linux診斷工具0x.toolsLinux
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- securecrt保持會話不會斷掉Securecrt會話
- MySQL的共享鎖阻塞會話案例淺析MySql會話
- cursor: pin S簡單說明以及測試、解決
- oracle 12c 新增的診斷事件的初步嘗試Oracle事件
- Selenium等待事件Waits事件AI
- [JVM] 應用診斷工具之Fastthread(線上診斷)JVMASTthread
- ORACLE診斷案例Oracle
- Android學習過程的Cursor遊標填坑筆記Android筆記
- latch等待事件彙總事件
- Latch free等待事件(轉)事件
- gc cr request等待事件GC事件