ORACLE存储过程多次调试,不定时卡死
来源:互联网 发布:linux apache日志 编辑:程序博客网 时间:2024/05/16 10:26
基本要素(时间、用户、问题)
研发在进行一个过程的调试,反馈该过程调试不定期卡死,点取消无反映,从新开一个测试窗口依然卡死,怀疑是数据库问题,请求诊断。
问题分析
步骤一:问题验证
首先想进行问题重现,于是远程连接到数据库,新开一个窗口进行调试,执行研发的调试过程,如下
多次调试未重现问题现象,询问情况,研发人员告知其问题依旧,而且当前正处在卡死的情况中,怀疑是否会话在等待立即查看会话等待事件,如下
发现都是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引起。
- ORACLE存储过程多次调试,不定时卡死
- oracle存储过程编译卡死
- Oracle存储过程编译卡死
- oracle 存储过程编辑 卡死
- oracle 中存储过程无法编译。卡死, session kill 不掉。
- Oracle定时存储过程
- PL/SQL中调试存储过程卡死问题解决
- oracle11g plsql调试存储过程卡死的处理技巧
- 调试oracle存储过程。
- 调试oracle存储过程
- oracle存储过程调试!
- Oracle调试存储过程
- oracle存储过程调试
- oracle调试存储过程
- Oracle调试存储过程
- Oracle编译存储过程卡死的问题
- oracle编译存储过程卡死,随笔录5.8
- Oracle存储过程编译卡死的解决方法
- 嵌入式 Sqlite3学习小结
- 的飞洒黄金古神减肥授课计划公开大概
- 禁用与卸载Oracle AWR特性
- 又乔迁回来了!
- 哪里有希望那里就有希望
- ORACLE存储过程多次调试,不定时卡死
- Shell 命令--网站--总结自《Linux Shell 脚本攻略》
- 一个简单的PHP扩展
- 如何用C++实现浏览器弹窗
- Java编程之获取计算机的MAC地址
- 上传进行验证时,出现了 Invalid Code Signing Entitlements 的错误,百度以后发现有多原因可以引发这个错误。
- AVS编码---lencod.c中函数流程以及各函数作用
- Android自定义Dialog 及位置和大小
- Android UI开发第三十五篇——AppCompat实现Action Bar