oracle等待事件之cursor:pin S wait on X
cursor:pin S wait on X
什麼是cursor:pin S wait on X 等待事件?
當一個會話嘗試得到一個mutex pin的時候,但是其他會話正在以exclusive模式持有相同cursor object的mutex,此時申請mutex pin的會話等待事件即為cursor:pin S wait on X 。
造成該等待事件的原因:
1.shared pool設定太小,或者由於自動記憶體管理導致的。
2.頻繁的硬解析
3.子游標太多
4.BUG
5.解析錯誤
關於解析錯誤,可以通過設定10035事件開啟記錄解析錯誤的sql到alert.log中。
ALTER SYSTEM SET EVENTS '10035 trace name context forever, level 1';
如何定位問題會話和sql呢?
首先通過v$event_name檢視p1 p2 p3含義:
SYS@cdbtest1(CDB$ROOT)> set line 100
SYS@cdbtest1(CDB$ROOT)> select PARAMETER1,PARAMETER2,PARAMETER3 from v$event_name where name='cursor: pin S wait on X';
PARAMETER1 PARAMETER2 PARAMETER3
------------------------------ ------------------------------ ------------------------------
idn value where
p1值是Mutex identifier,與sql的hash value匹配可以得到具體的sql,可以用下面的sql查詢,注意不要填成了p1raw值。
SELECT sql_id, sql_text, version_count
FROM V$SQLAREA where HASH_VALUE='000000001A27969A';
p2值是Mutex value。高8位包含了持有mutex的會話的sid資訊,也就是holder的sid;低8位是reference count值,如果都是0的話,那麼證明該持有者以X模式持有。比如p2raw:0000005200000000
SELECT decode(trunc(0000005200000000/4294967296),
0,trunc(0000005200000000/65536),
trunc(0000005200000000/4294967296)) SID_HOLDING_MUTEX
FROM dual;
352187318272
21474836480
p3值是被請求的mutex的地址,可以用下面的sql查詢
SELECT MUTEX_TYPE, LOCATION
FROM x$mutex_sleep
WHERE mutex_type like 'Cursor Pin%'
and location_id in (
SELECT decode(trunc(&&P3/4294967296),
0,trunc(&&P3/65536),
trunc(&&P3/4294967296)) LOCATION_ID
FROM dual);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31480688/viewspace-2648470/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- cursor pin S wait on XAI
- cursor: pin S wait on XAI
- cursor:pin S wait on X故障診分析AI
- [20201117]解析cursor pin S等待事件.txt事件
- Cursor Mutex S Waits等待事件引發hangMutexAI事件
- 【等待事件】library cache pin事件
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- Oracle10g等待事件型別wait_class說明Oracle事件型別AI
- Oracle:cursor:mutex XOracleMutex
- Oracle等待事件之enq: TM – contentionOracle事件ENQ
- oracle等待事件之enq: CF – contentionOracle事件ENQ
- 【TUNE_ORACLE】等待事件之IO等待“read by other session”Oracle事件Session
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write”Oracle事件
- buffer busy wait 等待事件說明(轉)AI事件
- 【WAIT】 log file sync等待事件說明AI事件
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write temp”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file parallel write”Oracle事件Parallel
- 【TUNE_ORACLE】等待事件之“library cache lock”Oracle事件
- 【TUNE_ORACLE】等待事件之“buffer busy waits”Oracle事件AI
- 【TUNE_ORACLE】等待事件之“library cache pins”Oracle事件
- cursor: pin S簡單說明以及測試、解決
- ORACLE 常見等待事件Oracle事件
- 常見的wait等待事件及處理(zt)AI事件
- Oracle常見UNDO等待事件Oracle事件
- 【TUNE_ORACLE】等待事件之日誌等待“log file sync”Oracle事件
- 等待事件wait for a undo record 與 fast_start_parallel_rollback引數事件AIASTParallel
- 【TUNE_ORACLE】等待事件之日誌等待“log file parallel write”Oracle事件Parallel
- Oracle面試寶典-等待事件篇Oracle面試事件
- [20190320]測試相同語句遇到導致cursor pin S的情況.txt
- [20190321]測試相同語句遇到導致cursor pin S的疑問.txt
- Oracle CursorOracle
- oracle 11.2.0.4 rac叢集等待事件enq: TM - contentionOracle事件ENQ
- Solidity事件,等待事件Solid事件
- ORACLE LOCK,LATCH,PINOracle
- 【CURSOR】Oracle 遊標 (cursor)知識梳理Oracle