2026-03-12 20:23:15
This commit is contained in:
64
vdh/after_servererror_trigger.sql
Normal file
64
vdh/after_servererror_trigger.sql
Normal file
@@ -0,0 +1,64 @@
|
||||
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;
|
||||
/
|
||||
Reference in New Issue
Block a user