小机上运行ORACLE需要注意的进程调度BUG

前 言


小y这个名字,是笔者临时想的一个笔名,其实没有什么特殊的含义,就暂且用他来代表我们这些为各个数据中心奉献自己青春的一群默默无闻的IT人吧!


小y今天要和大家分享的是一个疑难杂症的分析过程。如果大家有耐心读完这个案例,一定会或多或少有些收获,也就没浪费小y的一片苦心。


具体来说是一个应用间歇性局部挂起案例的分析过程,报告中将对Oracle数据库稳定运行的共性风险和隐患作出提醒。


1问题描述

据客户反映,应用会间歇性出现异常,包括insert单条记录在内的操作长时间无法完成,按照客户的说法,数据库内可能有“死锁”现象,希望能够找到问题发生的根因,提出解决方案,以避免问题再次发生。

20151223日,问题再次发生,客户再次联系到小y,y通过远程方式进行了信息收集和故障诊断,最终定位了问题的根本原因。

环境介绍:

操作系统 HPUX IA64 B.11.31

数据库 ORACLE 10.2.0.5,单实例


2分析过程

>>2.1 异常时刻数据库出现异常等待



可以看到:


2个会话在等待行锁(拿不到事务锁,需要一直等待),另外有一个会话在等待“undo segment extension”。


>>>2.2 梳理异常等待之间的关系


1)分析行锁等待的阻塞者




可以看到:


SID 285/290的两个会话都是被SID=315的会话阻塞了,他们在等待行锁,时间已经超过60000秒。

2)查看阻塞者SID=315在做什么




可以看到:


SID=315的会话阻塞了其他两个会话,他本身也处于一个资源的等待上,在等待“undo segment extension”,已经等了70384秒了!该等待事件没有阻塞者。

3)SID=315在执行的SQL语句

INSERT INTO TABLE_NAME(COL1,COL2,COL3,COL4,COL5,COL6,COL7)VALUES(:1,:2,:3,:4,:5,:6,:7)


>>>2.3 什么是“undo segment extension”等待事件

“undo segment extension”即等待回滚段扩展完成。当执行增删改等操作时,数据库需要回滚段来存储前镜像,当回滚段空间不足时,则需要扩展。


具体来说,undo segment的扩展或者回收(extend / shrink)都是前台进程通过通知SMON后台进程来完成的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值