oracle等待事件之cursor:pin S wait on X

本文介绍了cursor: pin S wait on X等待事件,当会话申请mutex pin,而其他会话以exclusive模式持有相同cursor object的mutex时会触发。还分析了造成该事件的原因,如shared pool设置小、频繁硬解析等,并说明了定位问题会话和sql的方法,通过v$event_name查看p1 p2 p3含义进行查询。

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31480688/viewspace-2648470/

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值