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

题目部分

SQL*Plus的ERRORLOGGING的作用是什么?

答案部分

在Oracle 11g中,可以把SQL或PL/SQL错误信息自动记录到当前用户下的一个表中,而且不会自动删除,默认的表名为SPERRORLOG,也可以指定自己的表名替换默认表名。

下面的示例是记录错误信息到自己的表HEALTHCHECK_SPERRORLOG_LHR中:

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

示例如下所示:

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

原文发布于微信公众号 - DB宝(xiaomaimiaolhr)

原文发表时间:2019-01-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券