[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/ ,如需转载,请注明出处,否则将追究法律责任。