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

lfree發表於2023-01-31

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

--//來自
--//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部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2933491/,如需轉載,請註明出處,否則將追究法律責任。

相關文章