Mega Code Archive

 
Categories / Oracle PLSQL / System Packages
 

Use DBMS_UTILITY FORMAT_ERROR_STACK in a SERVERERROR trigger

SQL> SQL> SQL> CREATE TABLE error_log (   2    timestamp     DATE,   3    username      VARCHAR2(30),   4    instance      NUMBER,   5    database_name VARCHAR2(50),   6    error_stack   VARCHAR2(2000)   7    ); Table created. SQL> SQL> CREATE OR REPLACE TRIGGER LogErrors   2    AFTER SERVERERROR ON DATABASE   3  BEGIN   4    INSERT INTO error_log   5      VALUES (SYSDATE, SYS.LOGIN_USER, SYS.INSTANCE_NUM, SYS.   6              DATABASE_NAME, DBMS_UTILITY.FORMAT_ERROR_STACK);   7  END LogErrors;   8  / Trigger created. SQL> SQL> SELECT * FROM non_existent_table; SELECT * FROM non_existent_table               * ERROR at line 1: ORA-00942: table or view does not exist SQL> SQL> BEGIN   2    INSERT INTO non_existent_table VALUES ('Hello!');   3  END;   4  /   INSERT INTO non_existent_table VALUES ('Hello!');               * ERROR at line 2: ORA-06550: line 2, column 15: PL/SQL: ORA-00942: table or view does not exist ORA-06550: line 2, column 3: PL/SQL: SQL Statement ignored SQL> COLUMN error_stack FORMAT a61 WRAPPED SQL> SET LINE 80 SQL> SQL> SELECT * FROM error_log; TIMESTAMP USERNAME                         INSTANCE --------- ------------------------------ ---------- DATABASE_NAME -------------------------------------------------- ERROR_STACK ------------------------------------------------------------- 18-JUN-08 RNTSOFT                                  1 XE ORA-00942: table or view does not exist 18-JUN-08 RNTSOFT                                  1 XE ORA-06550: line 2, column 15: TIMESTAMP USERNAME                         INSTANCE --------- ------------------------------ ---------- DATABASE_NAME -------------------------------------------------- ERROR_STACK ------------------------------------------------------------- PL/SQL: ORA-00942: table or view does not exist ORA-06550: line 2, column 3: PL/SQL: SQL Statement ignored SQL> SQL> DROP TABLE error_log; Table dropped. SQL> SQL> drop trigger LOGERRORS; Trigger dropped. SQL>