SQL Error Logging
Jump to navigation
Jump to search
What is SQL Error Logging?
- Log error into database table, eliminate spool to OS file
- The logging table can be manually defined.
Demo
- Check Error Logging.
SQL> show errorlogging errorlogging is OFF
- Enable Error Logging. A logging table is created under the current user.
SQL> set errorlogging on SQL> show errorlogging errorlogging is ON TABLE [SCHEMA].SPERRORLOG
- Describe the logging table
SQL> desc SPERRORLOG Name Null? Type ----------------------------------------- -------- ---------------------------- USERNAME VARCHAR2(256) TIMESTAMP TIMESTAMP(6) SCRIPT VARCHAR2(1024) IDENTIFIER VARCHAR2(256) MESSAGE CLOB STATEMENT CLOB
- Try to create errors
-- Generate Error #1 SQL> SELECT 1/0 FROM DUAL; SELECT 1/0 FROM DUAL * ERROR at line 1: ORA-01476: divisor is equal to zero -- Generate Error #2 SQL> alter table EMP add new_column VARCHR2(1); alter table EMP add new_column VARCHR2(1) * ERROR at line 1: ORA-01735: invalid ALTER TABLE option SQL> commit;
- Check the SQL Error Logging.
SQL> column username format A10 SQL> column message format A30 wrap SQL> column statement format A30 wrap SQL> SELECT username, STATEMENT, message FROM sperrorlog; USERNAME STATEMENT MESSAGE ---------- ------------------------------ ------------------------------ TEST1_USER SELECT 1/0 FROM DUAL ORA-01476: divisor is equal to zero TEST1_USER alter table EMP add new_column ORA-01735: invalid ALTER TABLE VARCHR2(1) option
- Set an identifier so it’s easier to locate your logs.
SQL> set errorlogging on identifier 'REL1'
- Generate Error #3.
SQL> alter table EMP modify ABC NOT NULL; alter table EMP modify ABC NOT NULL * ERROR at line 1: ORA-00904: "ABC": invalid identifier
- Check the SQL Error Logging with identifier='REL1‘
SQL> SELECT username, statement, message, IDENTIFIER FROM sperrorlog where IDENTIFIER='REL1'; USERNAME STATEMENT MESSAGE IDENT ---------- ------------------------------ ------------------------------ ----- AUDIT_USER alter table EMP modify ABC NOT ORA-00904: "ABC": invalid iden REL1 NULL tifier
- Truncate the Error Logging. All records will be gone.
SQL> set errorlogging on truncate SQL> SELECT * FROM sperrorlog; No rows selected
- Disable Error Logging. Log off will automatically disable it.
SQL> set errorlogging OFF SQL> show errorlogging errorlogging is OFF
See Also
http://oraexplorer.com/2011/03/oracle-11g-sql-error-logging/