Files
oracle/vdh/after_servererror_trigger.sql

65 lines
1.3 KiB
MySQL
Raw Normal View History

2026-03-12 21:23:47 +01:00
drop sequence log_errors_seq;
create sequence log_errors_seq
start with 1
increment by 1
minvalue 1
nomaxvalue
nocache
nocycle;
drop table log_errors_tab;
create table log_errors_tab
( id number,
log_date date,
err_msg clob,
stm clob,
username varchar2(30),
err_depth number
)
tablespace sysaux;
create or replace trigger log_errors_trig after servererror on database
DECLARE
id number;
-- v_user varchar2(30);
-- v_os varchar2(30);
-- v_prog varchar2(30);
-- v_cur varchar2(100);
-- v_sql varchar2(2000);
stmt varchar2 (2000);
sql_text ora_name_list_t;
l binary_integer ;
BEGIN
select log_errors_seq.nextval
into id
from dual;
l := ora_sql_txt(sql_text);
for i in 1..l loop
stmt :=stmt||sql_text(i);
end loop;
for n in 1..ora_server_error_depth loop
insert into log_errors_tab (id, log_date, err_msg, stm, username, err_depth)
values (id, sysdate, ora_server_error_msg(n),stmt, ora_login_user, n);
end loop;
EXCEPTION
-- not pretty, but....
-- avoid blocking programs because of malfunctioning error logging
when others then
null;
END LOG_ERRORS_TRIG;
/