cursor:pin s wait x

cursor:pin s wait x

最近在晚上3点左右账务d会报cursor:pin s wait x的性能问题,收集了awr和ash报告信息。

ASH信息:

时间从31-03-2012 02:57:40到31-03-2012 03:12:40,时间间隔为15分钟。

AWR中信息:

正常时的解析情况:

出现cursor:pin s wait x时的解析情况:

从会话历史信息中找

sid       sql_id        status      event                       p1           p2
-------- -------------- ---------- -----------------------     ----------   ----------
6141     d1462k206jkd4  WAITING    library cache lock          5.04403211    
6310     d1462k206jkd4  WAITING    library cache lock          5.04403211    
6368     d1462k206jkd4  WAITING    library cache lock          5.04403211    
6430     d1462k206jkd4  WAITING    library cache lock          5.04403211
4623     d1462k206jkd4  WAITING    library cache lock          5.04403211
4474     d1462k206jkd4  WAITING    library cache lock          5.04403211
6430     d1462k206jkd4  WAITING    library cache lock          5.04403211
4888     d1462k206jkd4  WAITING    library cache lock          5.04403211
5097     d1462k206jkd4  WAITING    library cache lock          5.04403211
5097     d1462k206jkd4  WAITING    cursor: pin S wait on X     2154351012    20993800142848
5097     d1462k206jkd4  WAITING    cursor: pin S wait on X     2154351012    20993800142848
5175     d1462k206jkd4  WAITING    cursor: pin S wait on X     2154351012    20993800142848
5277     d1462k206jkd4  WAITING    cursor: pin S wait on X     2154351012    20993800142848 

sql_id:d1462k206jkd4的sql_text如下:

select * from (select ROWID, t.*                                                
         from I_USER_OS_PS_575 t                                         
        where mod(USER_ID, :"SYS_B_0") = :"SYS_B_1"                     
          and STATUS = :"SYS_B_2"                                       
          and insert_date between trunc(sysdate - :"SYS_B_3") andsysdate
        order by insert_date asc)                                       
 where :"SYS_B_4" =:"SYS_B_5"                                           
  and rownum <= :"SYS_B_6"

select所涉及的对象和insert的对象一致,查找mutex x holder的sid。根据cursor: pin S wait on X事件的P2参数得到holder的sid为4888。

相应的语句也发生在对象I_USER_OS_PS_575或者I_USER_OS_PS_573上面。

发现awr中hard parse数量相比增加,猜测是某种操作导致这个对象上的游标失效,导致所有相关语句发生硬解析,才会出现cursor: pin S wait on X。

于是做如下查询来验证:

object_name           last_ddl_time 
------------------   ----------------
I_USER_OS_PS_575     2012-4-1 3:02
I_USER_OS_PS_575     2012-4-1 3:00
I_USER_OS_PS_575     2012-4-1 3:00
I_USER_OS_PS_575     2012-3-31 3:0
I_USER_OS_PS_575     2012-3-30 3:0
I_USER_OS_PS_575     2012-3-29 3:0

凌晨三点对此表做了某种ddl,导致游标失效,发生硬解析,经过和应用沟通得知,晚上3:00有一个作业,需要对这些分区表做Shrink。所以导致相关对象上的Cursor失效,硬解析严重。

查了下03:00:00有个job

PURGE_LOG   21-11月-06 03.00.00.600000

Select actual_start_date FromDBA_SCHEDULER_JOB_RUN_DETAILS

where job_name='PURGE_LOG';

31-3月 -12 03.00.00.056803 上午 UTC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值