使用ErrorStack進行錯誤跟蹤及診斷!

不一樣的天空w發表於2017-12-23
在使用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)       
    -------------------- -------- -------------------- ---------------------------- 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2149162/,如需轉載,請註明出處,否則將追究法律責任。

相關文章