12C DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name

转发自 惜分飞:http://www.xifenfei.com/tag/wri_adv_sqlt_rtn_plan


近日遇到告警日志报错,如下:

2020-06-04T16:31:48.532177+08:00
WARNING: too many parse errors, count=513 SQL hash=0x750004bb
PARSE ERROR: ospid=32623, error=933 for statement: 
2020-06-04T16:31:48.532328+08:00
DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
Additional information: hd=0x2bea60738 phd=0x2bea60968 flg=0x28 cisid=0 sid=0 ciuid=0 uid=0 
2020-06-04T16:31:48.567323+08:00
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0x460e30f08       259  type body SYS.WRI$_ADV_SQLTUNE.SUB_DELETE_EXECUTION
0x6b8d30e8      2134  package body SYS.PRVT_ADVISOR.COMMON_DELETE_TASK
0x6b8d30e8      7342  package body SYS.PRVT_ADVISOR.DELETE_EXPIRED_TASKS
0x474636780         1  anonymous block
2020-06-04T16:31:50.024334+08:00
WARNING: too many parse errors, count=613 SQL hash=0x750004bb
PARSE ERROR: ospid=32623, error=933 for statement: 
2020-06-04T16:31:50.024485+08:00
DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
Additional information: hd=0x2bea60738 phd=0x2bea60968 flg=0x28 cisid=0 sid=0 ciuid=0 uid=0 

找到了最靠谱的飞大哥的Blog。特此记录。

数据库版本

SQL> set lines 200
SQL> select * from v$version;

BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0
PL/SQL Release 12.2.0.1.0 - Production                                                    0
CORE    12.2.0.1.0      Production                                                                0
TNS for Linux: Version 12.2.0.1.0 - Production                                            0
NLSRTL Version 12.2.0.1.0 - Production                                                    0

alert 日志报错

每天的早上9:19 左右都会有这么一坨的报错。强迫症患者要犯病了。!!

2020-06-04T08:09:19.535349+08:00
WARNING: too many parse errors, count=100 SQL hash=0x750004bb
PARSE ERROR: ospid=28430, error=933 for statement:
2020-06-04T08:09:19.535490+08:00
DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
Additional information: hd=0x2bea60738 phd=0x2bea60968 flg=0x28 cisid=0 sid=0 ciuid=0 uid=0
2020-06-04T08:09:19.535632+08:00
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0x460e30f08       259  type body SYS.WRI$_ADV_SQLTUNE.SUB_DELETE_EXECUTION
0x6b8d30e8      2134  package body SYS.PRVT_ADVISOR.COMMON_DELETE_TASK
0x6b8d30e8      7342  package body SYS.PRVT_ADVISOR.DELETE_EXPIRED_TASKS
0x7776f560         1  anonymous block
2020-06-04T08:09:24.309711+08:00
WARNING: too many parse errors, count=200 SQL hash=0x750004bb
PARSE ERROR: ospid=28430, error=933 for statement:
2020-06-04T08:09:24.309846+08:00
DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
Additional information: hd=0x2bea60738 phd=0x2bea60968 flg=0x28 cisid=0 sid=0 ciuid=0 uid=0
2020-06-04T08:09:24.310005+08:00
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0x460e30f08       259  type body SYS.WRI$_ADV_SQLTUNE.SUB_DELETE_EXECUTION
0x6b8d30e8      2134  package body SYS.PRVT_ADVISOR.COMMON_DELETE_TASK
0x6b8d30e8      7342  package body SYS.PRVT_ADVISOR.DELETE_EXPIRED_TASKS
0x7776f560         1  anonymous block
2020-06-04T08:09:26.535249+08:00
WARNING: too many parse errors, count=300 SQL hash=0x750004bb
PARSE ERROR: ospid=28430, error=933 for statement:
2020-06-04T08:09:26.535401+08:00
DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
Additional information: hd=0x2bea60738 phd=0x2bea60968 flg=0x28 cisid=0 sid=0 ciuid=0 uid=0
2020-06-04T08:09:26.535567+08:00
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0x460e30f08       259  type body SYS.WRI$_ADV_SQLTUNE.SUB_DELETE_EXECUTION
0x6b8d30e8      2134  package body SYS.PRVT_ADVISOR.COMMON_DELETE_TASK
0x6b8d30e8      7342  package body SYS.PRVT_ADVISOR.DELETE_EXPIRED_TASKS
0x7776f560         1  anonymous block
WARNING: too many parse errors, count=400 SQL hash=0x750004bb
PARSE ERROR: ospid=28430, error=933 for statement:
2020-06-04T08:09:27.481993+08:00
DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
Additional information: hd=0x2bea60738 phd=0x2bea60968 flg=0x28 cisid=0 sid=0 ciuid=0 uid=0
2020-06-04T08:09:27.482208+08:00
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0x460e30f08       259  type body SYS.WRI$_ADV_SQLTUNE.SUB_DELETE_EXECUTION
0x6b8d30e8      2134  package body SYS.PRVT_ADVISOR.COMMON_DELETE_TASK
0x6b8d30e8      7342  package body SYS.PRVT_ADVISOR.DELETE_EXPIRED_TASKS
0x7776f560         1  anonymous block

这里比较明显由于DELETE FROM wri$_adv_sqlt_rtn_planWHERE这条sql语法不对,导致无法解析因此报了ORA-00933错误.

情景再现

手动执行以下调用SQL,会再次触发该问题:

SQL>  exec SYS.PRVT_ADVISOR.DELETE_EXPIRED_TASKS();

PL/SQL procedure successfully completed.

就是他!就是他! 。。报错如下:

2020-06-04T16:31:50.024688+08:00
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0x460e30f08       259  type body SYS.WRI$_ADV_SQLTUNE.SUB_DELETE_EXECUTION
0x6b8d30e8      2134  package body SYS.PRVT_ADVISOR.COMMON_DELETE_TASK
0x6b8d30e8      7342  package body SYS.PRVT_ADVISOR.DELETE_EXPIRED_TASKS
0x474636780         1  anonymous block
2020-06-04T16:31:51.234957+08:00
WARNING: too many parse errors, count=713 SQL hash=0x750004bb
PARSE ERROR: ospid=32623, error=933 for statement:
.
.(此处忽略了大部分报错)
.
.... 

证明该程序本身有问题,属于oracle bug范畴,查询mos发现相关Bug 26764561 : ORA-00933 IN SYS.WRI$_ADV_SQLTUNE.SUB_DELETE_EXECUTION

解决办法

惜分飞大哥指出明路,,打补丁:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值