天天看點

【SQL*Plus】11g版本對 SQL*Plus錯誤日志的記錄功能——errorlogging參數

Oracle 11g中的errorlogging參數增強了錯誤資訊的記錄功能,可以做到錯誤資訊“落地”的功能。

1.Oracle版本資訊

sys@11gR2> select * from v$version;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 - Production

2.SQL*Plus中errorlogging參數的預設值

sec@11gR2> show errorlogging

errorlogging is OFF

3.修改errorlogging選項為ON開啟錯誤日志記錄功能

sec@11gR2> set errorlogging on

errorlogging is ON TABLE SEC.SPERRORLOG

注意再次提示的内容,“set errorlogging on”指令将自動在目前使用者下建立表SPERRORLOG,用于記錄錯誤資訊。

sec@11gR2> desc SPERRORLOG

 Name          Null?    Type

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

 USERNAME               VARCHAR2(256)

 TIMESTAMP              TIMESTAMP(6)

 SCRIPT                 VARCHAR2(1024)

 IDENTIFIER             VARCHAR2(256)

 MESSAGE                CLOB

 STATEMENT              CLOB

每個字段的定義描述如下:

 USERNAME  -- 使用者名

 TIMESTAMP -- 錯誤發生的時間

 SCRIPT    -- 腳本名稱

 IDENTIFIER-- 辨別符

 MESSAGE   -- 記錄類似ORA、PLA或SP2錯誤資訊

 STATEMENT -- 錯誤資訊描述

4.模拟SQL*Plus中的錯誤

sec@11gR2> show secooler

SP2-0158: unknown SHOW option "secooler"

sec@11gR2> help secooler

SP2-0172: No HELP matching this topic was found.

sec@11gR2> seeeeelect from tab;

SP2-0734: unknown command beginning "seeeeelect..." - rest of line ignored.

sec@11gR2> create table t as as select * from user_objects;

create table t as as select * from user_objects

                  *

ERROR at line 1:

ORA-00928: missing SELECT keyword

sec@11gR2>

5.通過查詢SPERRORLOG表獲得所有錯誤資訊

sec@11gR2> col USERNAME for a8

sec@11gR2> col TIMESTAMP for a14

sec@11gR2> col MESSAGE for a20

sec@11gR2> col STATEMENT for a20

sec@11gR2> select USERNAME,TIMESTAMP,MESSAGE,STATEMENT from SPERRORLOG;

USERNAME TIMESTAMP      MESSAGE              STATEMENT

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

SEC      06-MAY-10 03.5 SP2-0158: unknown SH show secooler

         1.49.000000 PM OW option "secooler"

SEC      06-MAY-10 03.5 SP2-0172: No HELP ma help secooler

         1.51.000000 PM tching this topic wa

                        s found.

SEC      06-MAY-10 03.5 SP2-0734: unknown co seeeeelect from tab;

         1.54.000000 PM mmand beginning "see

                        eeelect..." - rest o

                        f line ignored.

SEC      06-MAY-10 03.5 ORA-00928: missing S create table t as as

         1.55.000000 PM ELECT keyword         select * from user_

                                             objects

可見,曾經發生的錯誤資訊一覽無餘。

6.使用commit指令可以永久記錄這些報錯資訊

若想将報錯資訊永久的保留下來,隻需要在session中輸入commit指令便可。

7.Oracle 11gR2官方文檔中參考資訊

http://download.oracle.com/docs/cd/B28359_01/server.111/b31189/ch12040.htm#SQPUG160

8.小結

通過參數errorlogging的設定,可以非常便捷的開啟錯誤資訊記錄功能。當在SQL*Plus中調試腳本或SQL語句時,該功能起到非常重要的作用。

另外,通過這個錯誤記錄功能,也可以建立一個誤操作自檢庫,以便自省吾身。

Good luck.

secooler

10.05.06

-- The End --