【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程式設計師面試筆試寶典》,作者:李華榮。