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