• too many parse errors


    too many parse errors

    Table of Contents

    1 现象

    在alert日志中包含如下信息:

      XHJ(11):Additional information: hd=0x19a987dd8 phd=0x19a95b708 flg=0x28 cisid=131 sid=131 ciuid=131 uid=131 sqlid=37qs9jgx9awp2
    XHJ(11):...Current username=UCR_JOUR
    XHJ(11):...Application: JDBC Thin Client Action:
    2020-08-11T16:54:59.469071+08:00
    XHJ(11):WARNING: too many parse errors, count=13301 SQL hash=0xdeb7102d
    XHJ(11):PARSE ERROR: ospid=32548, error=2019 for statement:
    2020-08-11T16:54:59.469492+08:00
    XHJ(11):select 'EOS_REL_01' as mwcId,  a.* from ( select  'eos_rel_01' MWC_WORK_ID,
           A.BUSIFORM_NODE_ID,
           A.STEP_ID,
           A.REL_STEP_ID,
           A.BUSIFORM_ID,
           A.EXT_ID,
           '0' STATE
      FROM (select T.BUSIFORM_NODE_ID,
                   T.STEP_ID,
                   T1.REL_STEP_ID,
                   T.BUSIFORM_ID,
                   T.EXT_ID
              from  t, t@dblink_c as t1
             where t.rel_id = t1.rel_id
               and t.state = 'B') A
     WHERE exists (select 1
              from t2
             where t2.busiform_node_id = a.busiform_node_id
               and t2.step_id = a.rel_step_id
               and t2.ext_id = a.ext_id
               and t2.state = '9')
           AND ROWNUM < 50) a where rownum <100
    

    2 原因

    Oracle 12.2 之后数据研发的新功能,当解析失败次数超过一定限制(默认100次,由参数_kks_parse_error_warning控制), 会将失败的信息写入到alert日志中。

    set lines 200;
    set pages 200;
    col inst_id format 99;
    col con_id format 99;
    col name for a35;
    col description for a30;
    col value for a10;
    col ismod for a6
    col isdefault for a10
    
    select
      x.inst_id,
      y.con_id,
      x.ksppinm  name,
      x.ksppdesc description,
      y.ksppstvl  value,
      y.ksppstdf  isdefault,
      decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod,
      decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj
    from sys.x$ksppi x,
         sys.x$ksppcv y
    where 1=1
      and x.inst_id = y.inst_id
      and x.indx = y.indx
      and x.ksppinm like '%parse_error%'
    order by translate(x.ksppinm, ' _', ' '),x.inst_id,y.con_id;
    

    执行示例:

    INST_ID CON_ID NAME                                DESCRIPTION                    VALUE      ISDEFAULT  ISMOD  ISADJ
    ------- ------ ----------------------------------- ------------------------------ ---------- ---------- ------ ---------------
          1      1 _kks_cached_parse_errors            KKS cached parse errors        0          TRUE       FALSE  FALSE
          1      1 _kks_parse_error_warning            Parse error warning            100        TRUE       FALSE  FALSE
    

    根据原因是解析失败,那么一般是SQL本身的问题。

    3 解决

    从上面的示例中,将sql语句取出,执行,发现db link 不可用。将dblink 修复后即完好 。

    Author: halberd.lee

    Created: 2020-08-11 Tue 17:40

    Validate

  • 相关阅读:
    7.内网渗透之windows认证机制
    10.Python之Ansible自动化运维常用模块
    9.python 系统批量运维管理器之Fabric模块
    8.python 系统批量运维管理器之pexpect模块
    7.python实现高效端口扫描器之nmap模块
    6.python探测Web服务质量方法之pycurl模块
    5.python之pip安装模块失败
    4.python 系统批量运维管理器之paramiko模块
    3.python 发送邮件之smtplib模块
    微慕WordPress小程序增强版
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/13477159.html
Copyright © 2020-2023  润新知