共計 1574 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章主要為大家展示了“如何利用 errorstack 事件進行錯誤跟蹤和診斷”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“如何利用 errorstack 事件進行錯誤跟蹤和診斷”這篇文章吧。
有時在執行一系列后臺 SQL 或 PL/SQL 后出現了 Oracle 錯誤和異常,僅憑 ORA 錯誤號及簡單信息提示難以確定錯誤發生的位置,此時可以利用 errorstack 事件幫助我們定位到準確的錯誤 SQL,從而能有效的協助我們診斷問題。
實驗前先創建一個測試表
conn
scott/tiger
create table
t1(id number, value number(2,1));
設置 errorstack 事件跟蹤
conn / as
sysdba
alter system
set events 1438 trace name errorstack forever, level 3
實際中可以手動執行出現問題的后臺代碼,獲取跟蹤文件,這里我們就簡單執行一個 SQL 做測試
conn
scott/tiger
insert into t1
values(1, 100.2);
系統報錯:
第 1 行出現錯誤:
ORA-01438: 值大于為此列指定的允許精度
關閉 errorstack 事件跟蹤
conn / as
sysdba
alter system
set events 1438 trace name errorstack off
打開警告日志,可以看到對事件的設置及對應的跟蹤文件
Sun May 20 20:12:45 2018
OS Pid: 3924 executed
alter system set events 1438 trace name errorstack forever, level 3
Sun May 20 20:12:52 2018
Errors in file
C:\ORACLE\diag\rdbms\mes\mes\trace\mes_ora_1340.trc:
ORA-01438: 值大于為此列指定的允許精度
Errors in file
C:\ORACLE\diag\rdbms\mes\mes\trace\mes_ora_1340.trc:
ORA-01438: 值大于為此列指定的允許精度
Errors in file
C:\ORACLE\diag\rdbms\mes\mes\trace\mes_ora_1340.trc:
ORA-01438: 值大于為此列指定的允許精度
Sun May 20 20:12:54 2018
Dumping diagnostic data
in directory=[cdmp_20180520201254], requested by (instance=1, osid=1340),
summary=[abnormal process termination].
Sun May 20 20:13:04 2018
OS Pid: 292 executed
alter system set events 1438 trace name errorstack off
查看跟蹤文件 mes_ora_1340.trc 的內容,可以看到發生錯誤的具體 SQL 信息
—– Error Stack Dump
—–
ORA-01438: 值大于為此列指定的允許精度
—– Current SQL
Statement for this session (sql_id=5pwbn8v653a76) —–
insert into t1 values(1,
100.2)
—– Call Stack Trace
—–
再往下就是棧的調用信息,做進一步深入追蹤時可以參考。
找到了發生問題的 SQL,就可以有針對性的進行分析和診斷了。
以上是“如何利用 errorstack 事件進行錯誤跟蹤和診斷”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!