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

  • 2019 年 10 月 11 日
  • 筆記

题目部分

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