Oracle出现解析错误时的跟踪排查办法
简介
存储过程解析错误或某频繁SQL语句解析错误,主要发生在SQL AREA BUILD上,若频繁解析错误则会导致严重的library cache lock问题,整个数据库可能会处于hang死的状态。
问:对于一个比较复杂的存储过程来说,如何快速定位到是什么语句什么原因导致的失败解析呢?
答案:在解析SQL的过程中,若碰到SQL语法错误、访问的对象不存在或没有权限,则会导致目标SQL语句解析失败,所以,解析失败的SQL语句是不会生成执行计划的。可以通过如下几种方式找到解析失败的SQL:
① 通过关联X$KGLCURSOR和X$KGLCURSOR_CHILD_SQLID视图
② 通过使用10035事件
③ 通过Oracle systemdump
Oracle提供了一系列的跟踪事件来帮助定位各种问题,通过10035事件可以诊断解析失败的情况,如下:
1[oracle@rhel6lhr ~]$ oerr ora 10035<br>210035, 00000, "Write parse failures to alert log file"<br>