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>
SQL> DECLARE
2 v_StringVar VARCHAR2(2);
3 BEGIN
4 -- This is a runtime error!
5 v_StringVar := 'abcdef';
6 END;
7 /
DECLARE
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 5
SQL>
SQL>
SQL>
SQL> SELECT * FROM error_log;
TIMESTAMP USERNAME INSTANCE
--------- ------------------------------ ----------
DATABASE_NAME
--------------------------------------------------
ERROR_STACK
-------------------------------------------------------------
18-JUN-08 RNTSOFT 1
XE
ORA-06502: PL/SQL: numeric or value error: character string b
uffer too small
ORA-06512: at line 5
SQL>
SQL> DROP TABLE error_log;
Table dropped.
SQL>
SQL> drop trigger LOGERRORS;
Trigger dropped.