ITPub博客

首页 > 数据库 > Oracle > [20230104]Oracle too many parse errors PARSE ERROR.txt

[20230104]Oracle too many parse errors PARSE ERROR.txt

原创 Oracle 作者:lfree 时间:2023-01-31 20:31:49 0 删除 编辑

[20230104]Oracle too many parse errors PARSE ERROR.txt

--//来自 https://jonathanlewis.wordpress.com/2017/10/06/12c-parse/
--//http://anuj-singh.blogspot.com/2022/12/oracle-too-many-parse-errors-parse-error.html
--//这是我生产系统遇到的类似情况,从12.2c开始oracle分析出现错误超过100次,在alter文件中就有记录.
--//我最近一直在优化一个项目,我发现orcle新版本提供这么简单发现写错sql语句,可惜开发团队没有充分利用这个特性.
--//在alert文件记录了大量错误语句,当我提交要对方看看到底怎么回事的时候,总是没有下文.
--//如果你的程序出现大量sql语句执行错误,你的业务逻辑如何保证是正确的.

--//我们另外一个项目竟然在出现错误提示时,弹出的对话框按钮里面竟然提示是否可以继续执行,简直无语.如何保证这样的情况下业务
--//的逻辑是否正确.我们就遇到这样的情况,楼层的交换机停电,导致网络断开,因为在出现错误是可以不推出程序,导致业务逻辑发生错
--//误.这样的错误运维人员在后台修改数据非常危险,也很容易出错.而且这样的错误事后非常难查以及定位.,

--//后来我自己测试才发现,不这样设计这套软件根本没有无法正常运行下次,要不断的退出.
--//只要进行鲁棒性测试,鼠标在界面上"乱点",就很容易出错.

1.环境:
SCOTT@test01p> @ver1
PORT_STRING          VERSION    BANNER                                                                       CON_ID
-------------------- ---------- ---------------------------------------------------------------------------- ------
IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production      0

2.测试脚本:
$ cat tt2.txt
declare
        m1 number;
begin
        for i in 1..&&1 loop
        begin
                execute immediate 'select count(*) frm dual' into m1;
                dbms_output.put_line(m1);
        exception
                when others then null;
        end;
        end loop;
end;
/
--//frm故意写错.

3.测试:
SCOTT@test01p> set verify off
SCOTT@test01p> @ tt2.txt 201
PL/SQL procedure successfully completed.

--//alert记录如下:
2023-01-22T15:57:30.010417+08:00
TEST01P(3):----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
000007FF17A2A0C8         6  anonymous block
2023-01-22T15:58:17.560137+08:00
TEST01P(3):WARNING: too many parse errors, count=100 SQL hash=0x2f17e915
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TEST01P(3):PARSE ERROR: ospid=6312, error=923 for statement:
2023-01-22T15:58:17.561137+08:00
TEST01P(3):Select Count(*) frm dual
TEST01P(3):Additional information: hd=000007FF17A257C0 phd=000007FF17A26F18 flg=0x28 cisid=81 sid=81 ciuid=81 uid=81
2023-01-22T15:58:17.562137+08:00
TEST01P(3):----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
000007FF17BCAB78         6  anonymous block
TEST01P(3):WARNING: too many parse errors, count=200 SQL hash=0x2f17e915
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TEST01P(3):PARSE ERROR: ospid=6312, error=923 for statement:
2023-01-22T15:58:17.581138+08:00
TEST01P(3):Select Count(*) frm dual ----> //问题语句.
TEST01P(3):Additional information: hd=000007FF17A257C0 phd=000007FF17A26F18 flg=0x28 cisid=81 sid=81 ciuid=81 uid=81
2023-01-22T15:58:17.582138+08:00
TEST01P(3):----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
000007FF17BCAB78         6  anonymous block

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2933491/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4019
  • 访问量
    7998939