Oracle解析错误的跟踪办法

0    406    1

Tags:

👉 本文共约2495个字,系统预计阅读时间或需10分钟。

简介

存储过程解析错误或某频繁SQL语句解析错误,主要发生在SQL AREA BUILD上,若频繁解析错误则会导致严重的library cache lock问题,整个数据库可能会处于hang死的状态。

问:对于一个比较复杂的存储过程来说,如何快速定位到是什么语句什么原因导致的失败解析呢?
答案:在解析SQL的过程中,若碰到SQL语法错误、访问的对象不存在或没有权限,则会导致目标SQL语句解析失败,所以,解析失败的SQL语句是不会生成执行计划的。可以通过如下几种方式找到解析失败的SQL:
① 通过关联X$KGLCURSOR和X$KGLCURSOR_CHILD_SQLID视图
② 通过使用10035事件
③ 通过Oracle systemdump

Oracle提供了一系列的跟踪事件来帮助定位各种问题,通过10035事件可以诊断解析失败的情况,如下:

首先通过“alter system set events '10035 trace name context forever,level 5';”开启监控,然后使用tail观察告警日志,找到问题SQL之后,使用命令“alter system set events '10035 trace name context off';”关闭10035事件。

在12.2之前可以通过配置ALTER SYSTEM SET EVENTS '10035 trace name context forever, level 1';进行跟踪解析失败的SQL,从12.2开始对同一条SQL语句默认解析错误超过100(隐含参数_kks_parse_error_warning控制)的话就会在告警日志中显示,然后我们在告警日志中搜索"PARSE ERROR"、“parse errors” 就可以看到相关的SQL解析失败的语句,最后进行错误的SQL处理即可。

可以设置隐含参数_kks_parse_error_warning=0来消减警告,但不建议这样做。因为解析失败对数据库的性能是有害的,它可以引起各种 mutex/latch/library cache lock 的争用。

模拟该错误

环境:19c

查看告警日志:

可以看到,每增加100解析错误,告警日志都会输出1次错误,且给出了错误的SQL语句:INSERT INTO T_BG_20280414_LHR_88(N,V,V2) VALUES(:N1,:V1,:V2) ,sqlid=f531rdm0wuqtm也给出了,而且显示是匿名块( anonymous block), error=942表示ora-942,表示表或视图不存在。

在 12.2 Alert.log 中"WARNING: too many parse errors" (Doc ID 2364845.1)

'WARNING: too many parse errors' in the 12.2 and above Alert.log (Doc ID 2320935.1)

症状

  • alert.log 中经常会生成以下消息:

    WARNING: too many parse errors, count=29200 SQL hash=0x2473a808
    PARSE ERROR: ospid=7013, error=942 for statement:
    2017-05-30T08:19:13.196642-06:00
    select col1, col2 from testtab where col1=1;

  • “error = 942”表示 SQL 无法成功解析的根本原因。在这种情况下,error=942 意味着 ora-942:表或视图不存在。

原因

类似的问题正在下面的 Bug 中调查:

BUG 26184177 - "WARNING: TOO MANY PARSE ERRORS" IN THE ALERT.LOG <===closed as duplicate to following bug:
Bug 16945190 DIAGENH: DUMPING PARSE FAILURES AUTOMATICALLY W/O EVENT 10035

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复