SQL*Plus的ERRORLOGGING的作用是什么?
答案部分
在Oracle 11g中,可以把SQL或PL/SQL错误信息自动记录到当前用户下的一个表中,而且不会自动删除,默认的表名为SPERRORLOG,也可以指定自己的表名替换默认表名。
下面的示例是记录错误信息到自己的表HEALTHCHECK_SPERRORLOG_LHR中:
代码语言:javascript复制DROP TABLE HEALTHCHECK_SPERRORLOG_LHR PURGE;
CREATE TABLE HEALTHCHECK_SPERRORLOG_LHR(USERNAME VARCHAR(256),
TIMESTAMP TIMESTAMP,
SCRIPT VARCHAR(4000),
IDENTIFIER VARCHAR(256),
MESSAGE VARCHAR(4000),
STATEMENT VARCHAR(4000));
SET ERRORLOGGING ON TABLE HEALTHCHECK_SPERRORLOG_LHR IDENTIFIER LHR_DB_HEALTHCHECK
示例如下所示:
代码语言:javascript复制SYS@lhrdb> SHOW ERRORLOGGING
errorlogging is OFF
SYS@lhrdb> SET ERRORLOGGING ON
SYS@lhrdb> SHOW ERRORLOGGING
errorlogging is ON TABLE SPERRORLOG
SYS@lhrdb> SET LINE 80
SYS@lhrdb> DESC SPERRORLOG
Name Null? Type
----------------------------------------- -------- ----------------------------
USERNAME VARCHAR2(256)
TIMESTAMP TIMESTAMP(6)
SCRIPT CLOB
IDENTIFIER VARCHAR2(256)
MESSAGE CLOB
STATEMENT CLOB
SYS@lhrdb> SELECT * FROM TXX;
SELECT * FROM TXX
*
ERROR at line 1:
ORA-00942: table or view does not exist
SYS@lhrdb> COL USERNAME FOR A8
SYS@lhrdb> COL MESSAGE FOR A40
SYS@lhrdb> SELECT USERNAME,MESSAGE FROM SPERRORLOG;
USERNAME MESSAGE
-------- ----------------------------------------
SYS ORA-00942: table or view does not exist
& 说明:
有关ERRORLOGGING的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2121056/
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。