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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值