ORACLE存储过程多次调试,不定时卡死

基本要素(时间、用户、问题)

研发在进行一个过程的调试,反馈该过程调试不定期卡死,点取消无反映,从新开一个测试窗口依然卡死,怀疑是数据库问题,请求诊断。

问题分析

步骤一:问题验证

         首先想进行问题重现,于是远程连接到数据库,新开一个窗口进行调试,执行研发的调试过程,如下


         多次调试未重现问题现象,询问情况,研发人员告知其问题依旧,而且当前正处在卡死的情况中,怀疑是否会话在等待立即查看会话等待事件,如下


         发现都是SQL*Net空闲等待,怀疑是否出现死锁,于是查看alert日志,未发现deadlock的错误信息,也可以排除死锁。

步骤二:进行hang分析

         问题仍然没有定位,由于目前调试处于卡死的状态,想通过hang分析来进行问题,诊断,于是执行hanganalyze 5跟踪,得到日志如下:

*** 2014-09-09 16:31:10.052

*** SESSION ID:(49.34904) 2014-09-0916:31:10.052

*** CLIENT ID:() 2014-09-09 16:31:10.052

*** SERVICE NAME:(ydtest) 2014-09-0916:31:10.052

*** MODULE NAME:(sqlplus.exe) 2014-09-0916:31:10.052

*** ACTION NAME:() 2014-09-09 16:31:10.052

Processing Oradebug command 'hanganalyze 5'

*** 2014-09-09 16:31:10.052

===============================================================================

HANG ANALYSIS:

 instances (db_name.oracle_sid): ydtest.ydtest

 oradebug_node_dump_level: 5

 analysis initiated by oradebug

===============================================================================

Chains most likely to have caused the hang:

 <no chains found>

===============================================================================

No chains found.

===============================================================================

Extra information that will be dumped athigher levels:

可以看到,并未出现hang住现象,问题陷入僵局,目前只能怀疑是数据库bug情况,无意中询问研发人员调试的操作过程,发现他每次操作的时候都是开始很调试很流畅,然后点取消调试,再调试就卡死,而我这边同样操作未出现该问题,进一步咨询plsql dev版本,研发用的是8.2,而我用的是10版本,可能与版本有关系。

         因此,通过本次分析,数据库不存在等待情况,那么出现卡死就有两种可能:

1.数据库BUG,目前实例为11.1.0.7,不是我们推荐的数据库版本;

2.PLSQL DEV操作步骤或版本有问题;

解决过程

尝试更换Plsql dev工具

         由于数据库BUG判断和升级比较复杂,因此先尝试用最简单的更换Plsql Dev工具的方式排除问题,采用最新的10版本工具,安装测试,经过研发人员的试用,目前为止未在出现卡死现象,因此暂时先用这种方式再观察。

         得出结论,如果过程调试莫名卡死,在排除锁表、等待事件后,有可能是PLSQL dev工具的问题

关键知识点

deadlock(死锁):如果数据库发生死锁,会在alert日志中有错误信息。

hang分析:利用hanganalyze命令,生成日志分析数据库卡住原因。

过程调试卡死,在排查了业务逻辑、锁表、等待事件后,可能是工具的BUG引起。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值