程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 使用ERRORSTACK進行錯誤跟蹤及診斷

使用ERRORSTACK進行錯誤跟蹤及診斷

編輯:Oracle數據庫基礎
Oracle提供接口用於診斷Oracle的錯誤信息。
診斷事件可以在Session級設置,也可以在系統級設置,通常如果要診斷全局錯誤,最好在系統級設置,以下是一個測試例子,所選事件只以示范為目的:

SQL> alter system set event='984 trace name ERRORSTACK level  10' scope=spfile;



System altered.



SQL> startup force;

Oracle instance started.



Total System Global Area  101782828 bytes

Fixed Size                   451884 bytes

Variable Size              37748736 bytes

Database Buffers           62914560 bytes

Redo Buffers                 667648 bytes

Database mounted.

Database opened.

SQL> create table t (name varchar2(10),id number);



Table created.



SQL> insert into t values(a,1);

insert into t values(a,1)

                     *

ERROR at line 1:

ORA-00984: column not allowed here





SQL> !


此時的984錯誤將會被跟蹤,記錄到跟蹤文件中。
檢查udump目錄,找到trace文件:
[oracle@jumper oracle]$ cd $admin

[oracle@jumper udump]$ ls -sort

total 1020

   4 -rw-r--r--    1 oracle        533 Mar  2 16:06 t.sql

   4 -rw-r--r--    1 oracle        522 Mar  3 09:44 d.sql

  20 -rw-r--r--    1 oracle      17445 Mar  8 11:06 a.log

   4 -rw-r-----    1 oracle       3254 Mar 14 23:15 conner_ora_30683.trc

   4 -rw-r-----    1 oracle       1645 Mar 14 23:15 conner_ora_30701.trc

   4 -rw-r-----    1 oracle       1638 Mar 14 23:16 conner_ora_30719.trc

   4 -rw-r-----    1 oracle       1645 Mar 16 09:05 conner_ora_18565.trc

 976 -rw-r-----    1 oracle     993555 Mar 16 09:06 conner_ora_18589.trc

[oracle@jumper udump]$ vi conner_ora_18589.trc



/opt/oracle/admin/conner/udump/conner_ora_18589.trc

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning option

JServer Release 9.2.0.4.0 - Production

ORACLE_HOME = /opt/oracle/product/9.2.0

System name:    Linux

Node name:      jumper.hurray.com.cn

Release:        2.4.21-15.EL

Version:        #1 Thu Apr 22 00:27:41 EDT 2004

Machine:        i686

Instance name: conner

Redo thread mounted by this instance: 1

Oracle process number: 10

Unix process pid: 18589, image: [email protected] (TNS V1-V3)





*** 2005-03-16 09:06:56.178

ksedmp: internal or fatal error

ORA-00984: column not allowed here

Current SQL statement for this session:

insert into t values(a,1)

----- Call Stack Trace -----

calling              call     entry                argument values in hex

location             type     point                (? means dubious value)

-------------------- -------- -------------------- ----------------------------

ksedmp()+269         call     ksedst()+0           0 ? 0 ? 0 ? 0 ? 922C89F ?

                                                   AA642A0 ?

ksddoa()+446         call     ksedmp()+0           A ? AABDCA8 ? B70100B0 ?

                                                   3D8 ? 1 ? B7010114 ?

ksdpcg()+521         call     ksddoa()+0           B70100B0 ? AABDCA8 ?

ksdpec()+220         call     ksdpcg()+0           3D8 ? BFFF3D20 ? 1 ?

ksfpec()+133         call     ksdpec()+0           3D8 ? 3D8 ? AABAE7C ?

                                                   BFFF3D54 ? 9835E89 ?

                                                   AA642A0 ?

[Oracle@jumper udump]$ 




有了這個跟蹤文件就容易定位和診斷錯誤了。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved