您好,登錄后才能下訂單哦!
在使用oracle數據庫的過程中,可能會遇到各種各樣的錯誤或異常,很多異常提示并不具體,我們有必要了解一下oracle的ErrorStack跟蹤方式。ErrorStack是oracle提供的一種對于錯誤堆棧進行跟蹤的方法,通過設置跟蹤可以將一些錯誤的后臺信息詳盡轉儲出來,寫入跟蹤文件,對于錯誤的研究與診斷非常有效。設置ErrorStack主要有4個級別:
0 僅轉儲錯誤堆棧(0級已經逐漸被廢棄)
1 轉儲錯誤堆棧和函數調用堆棧
2 level 1+ProcessState
3 level 2+Context area(顯示所有cursors,著重顯示當前cursor)
用法:
開始跟蹤: alter system set events '<error_num> trace name errorstack forever,level <level>';
結束跟蹤: alter system set events '<error_num> trace name errorstack off';
首先模擬一個錯誤:
SQL> create table t3(id number,name varchar2(10));
表已創建。
SQL> insert into t3 values(1,a);
insert into t3 values(1,a)
*
第 1 行出現錯誤:
ORA-00984: 列在此處不允許
下面跟蹤這個錯誤:
SQL> alter system set events '984 trace name errorstack forever,level 3';
系統已更改。
SQL> insert into t3 values(1,a);
insert into t3 values(1,a)
*
第 1 行出現錯誤:
ORA-00984: 列在此處不允許
SQL> alter system set events '984 trace name errorstack off';
系統已更改。
在alert_orcl.log文件中可以看見如下信息:
Sun Dec 18 21:08:13 2011
OS Pid: 4058 executed alter system set events '984 trace name errorstack forever,level 3'
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4058.trc:
ORA-00984: 列在此處不允許
Sun Dec 18 21:08:49 2011
Trace dumping is performing id=[cdmp_20111218210849]
Sun Dec 18 21:09:20 2011
OS Pid: 4058 executed alter system set events '984 trace name errorstack off'
截取跟蹤文件的一段錯誤信息:
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3, mask=0x0)
----- Error Stack Dump -----
ORA-00984: 列在此處不允許
----- Current SQL Statement for this session (sql_id=9b8cruw3gwdxx) -----
insert into t3 values(1,a)
*** 2011-12-18 21:08:22.550
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。