cursor: pin S wait on X影响系统记录

         发现问题:从10.23号开始,生产数据库CPU消耗异常,DB Time是平常的两倍多,我看了这几天的AWR报告,有一个等待事件cursor: pin S wait on一直独占鳌头。

         定位问题:根据下列sql可以找到对应的业务系统执行的语句,然后根据执行语句到代码中找到那个功能。我定位到时的是一个定时功能,每个星期天凌晨5:00执行,更新TERMINAL_LOWER_USER_BASE(有两百五十万的数据)的内容,看代码是用的循环update commit,虽然这种方式不够优化,但也不至于有这么大的消耗。于是决定再观察两天,奇怪的是v$session,v$session_wait中一直看到这个等待事件,DB time也一致没有下降。

select b.*, sq.sql_text
  from v$session se,
       v$sql sq,
       (select a.*, s.sql_text
          from v$sql s,
               (select sid,
                       event,
                       wait_class,
                       p1,
                       p2raw,
                       to_number(substr(p2raw, 1, 4), 'xxxx') sid_hold_mutex_x
                  from v$session_wait
                 where event like 'cursor%') a
         where s.HASH_VALUE = a.p1) b
 where se.sid = b.sid
   and se.sql_hash_value = sq.hash_value;
         解决问题:根据sqlId到v$sql中查到一个执行1053175s,另一个为448356s,经判断确认是僵死的进程,kill掉就好了。            
       总结:这个问题耗时3天才解决,其实半天就可以,可惜自己的经验欠缺,如果找点查到v$sql的执行时间,问题应该早就解决了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值