oracle 11g 錯誤收集

aishu521發表於2013-03-24

lalahttp://space.itpub.net/27480945/viewspace-756286

oracle 11g以前,可以通過show errors命令檢視執行pl/sql語句時發生的錯誤,但不能記錄這些錯誤,現在,可以通過sql plus命令set errorlogging on,將sql或者pl/sql語句導致的所以錯誤寫入名為sperrorlog的表中。具體見如下測試:


C:\>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期六 3月 16 08:51:43 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> conn scott/tiger
已連線。

--檢查錯誤日誌記錄功能是否開啟

SQL> show errorlogging
errorlogging is OFF
SQL> set errorlogging on;
SQL> show errorlogging
errorlogging is ON TABLE SCOTT.SPERRORLOG

--建表及insert操作測試

SQL> create table t(id number,name varchar2(2O)
  2  ;
create table t(id number,name varchar2(2O)
                                        *
第 1 行出現錯誤:
ORA-00907: 缺失右括號


SQL> create table t(id number,name varchar2(2O));
create table t(id number,name varchar2(2O))
                                        *
第 1 行出現錯誤:
ORA-00907: 缺失右括號


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

表已建立。

SQL> alter table t add constraint pk_t primary key (id);

表已更改。

SQL> insert into t values(1,'heloong');

已建立 1 行。

SQL> commit;

提交完成。

SQL> insert into t values(1,'heloong');
insert into t values(1,'heloong')
*
第 1 行出現錯誤:
ORA-00001: 違反唯一約束條件 (SCOTT.PK_T)


SQL> insert into t values(2,'heloong');

已建立 1 行。

SQL> commit;

提交完成。

SQL> set linesize 200
SQL> desc sperrorlog;
 名稱
                                   是否為空? 型別
 -------------------------------------------------------------------------------
---------------------------------- -------- ------------------------------------
----------------------------------------
 USERNAME                    --使用者名稱
                                            VARCHAR2(256)
 TIMESTAMP                    --錯誤時間
                                            TIMESTAMP(6)
 SCRIPT.                            --指令碼名(如果有的話)
                                            VARCHAR2(1024)
 IDENTIFIER                     --使用者定義的標識
                                            VARCHAR2(256)
 MESSAGE                        --錯誤資訊
                                            CLOB
 STATEMENT                   --導致錯誤的語句
                                            CLOB

SQL> select username,statement,message from sperrorlog;

USERNAME
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------
STATEMENT
 MESSAGE
--------------------------------------------------------------------------------
 -------------------------------------------------------------------------------
-
SCOTT
create table t(id number,name varchar2(2O)
 ORA-00907: 缺失右括號

SCOTT
create table t(id number,name varchar2(2O))
 ORA-00907: 缺失右括號

SCOTT
insert into t values(1,"heloong")
 ORA-00001: 違反唯一約束條件 (SCOTT.PK_T)

    如上查詢結果,所有錯誤資訊都記錄到表sperrorlog,此功能對於oracle的批處理指令碼很有用,可以記錄整個過程的錯誤資訊,而不用滾動螢幕進行查詢,或者專門進行額外的日誌記錄。

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

相關文章