【DB笔试面试488】 SQL*Plus的ERRORLOGGING的作用是什么?

2019-09-30 16:16:58 浏览数 (1)

题目部分

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程序员面试笔试宝典》,作者:李华荣。

0 人点赞