after servererror trigger
after servererror trigger 2006-07-28 - By Wojciech Skrzynecki
Hello I would like to ask you about after servererror trigger. I wrote trigger as below: CREATE OR REPLACE TRIGGER notification_error after servererror on database declare d_sender varchar2(30) := ora_database_name; d_user varchar2(30) :=ora_login_user; d_rcp varchar2(100) := ' test'; d_mailhost VARCHAR2(30) := 'test'; d_mail_conn utl_smtp.connection; d_terminal VARCHAR2(30) :=userenv('terminal'); d_current_nr_error number := ora_server_error(1); ora_server_error_msg varchar2(100); BEGIN if d_current_nr_error between 01800 and 02231 or d_current_nr_error in (09291,16014) then ora_server_error_msg := SQLERRM(-d_current_nr_error); d_mail_conn := utl_smtp.open_connection(d_mailhost); utl_smtp.helo(d_mail_conn, d_mailhost ); utl_smtp.mail(d_mail_conn, d_sender); utl_smtp.rcpt(d_mail_conn, d_rcp); utl_smtp.open_data(d_mail_conn); utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'From: ' || ora_database_name); utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'Subject: ' || ora_server_error_msg); utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'User: ' || ora_login_user); utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'Terminal: ' || d_terminal); utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'Date: ' || to_char(sysdate, 'RRRR-MM-RR HH24:MI:SS') ); utl_smtp.close_data(d_mail_conn); utl_smtp.quit(d_mail_conn); end if; I do not know how to intercept background ORA error example "ORA-01652 (See ORA-01652.ora-code.com ): unable to extend temp segment by 512 in tablespace TEMP" or "ORA-9291 (See ORA-9291.ora-code.com ) invalid device specified for archive destination " Could you explain me how to do this? Thanks for help -- Wojciech Skrzynecki Database Administrator <p class="MsoNormal"><span style="font-family: Arial;">Hello</span></p> <p class="MsoNormal"><span style="font-family: Arial;"> </span></p> <p class="MsoNormal"><span style="font-family: Arial;">I would like to ask you about after servererror trigger. I wrote trigger as below:</span></p> <p class="MsoNormal"><span style="font-family: Arial;"> </span></p> <p class="MsoNormal"><span style="font-family: Arial;">CREATE OR REPLACE TRIGGER notification_error</span></p> <p class="MsoNormal"><span style="font-family: Arial;">after servererror on database</span></p> <p class="MsoNormal"><span style="font-family: Arial;">declare</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>d_sender<span style=""> </span><span style =""> </span>varchar2(30) := ora_database_name;</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>d_user varchar2(30) :=ora_login_user;</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>d_rcp <span style=""> </span><span style=""> </span>varchar2(100) := ' test';< /span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>d_mailhost <span style=""> </span><span style=""> < /span>VARCHAR2(30) := 'test';</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>d_mail_conn <span style=""> </span><span style=""> </span>utl_smtp.connection; </span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>d_terminal VARCHAR2(30) :=userenv('terminal');</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>d_current_nr_error <span style=""> </span><span style=""> </span >number := ora_server_error(1);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>ora_server_error_msg<span style=""> </span>varchar2(100);< /span></p> <p class="MsoNormal"><span style="font-family: Arial;">BEGIN<span style=""> </span></span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> < /span>if <span style=""> </span>d_current_nr_error<span style=""> < /span>between 01800 and 02231</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>or d_current_nr_error<span style=""> </span>in (09291,16014) </span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>then</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>ora_server_error_msg := SQLERRM(-d_current_nr_error);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>d_mail_conn := utl_smtp.open_connection(d_mailhost);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.helo(d_mail_conn, d_mailhost );</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.mail(d_mail_conn, d_sender);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.rcpt(d_mail_conn, d_rcp);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.open_data(d_mail_conn);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'From:<span style=""> </span>' || ora_database_name);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'Subject: ' || ora_server_error_msg);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'User: ' || ora_login_user);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'Terminal: ' || d_terminal);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.write_data(d_mail_conn, utl_tcp.CRLF || 'Date: ' || to_char(sysdate, 'RRRR-MM-RR HH24:MI:SS') );</span> </p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.close_data(d_mail_conn);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> </span>utl_smtp.quit(d_mail_conn);</span></p> <p class="MsoNormal"><span style="font-family: Arial;"><span style=""> < /span>end if;</span></p> <p class="MsoNormal"><span style="font-family: Arial;"> </span></p> <p class="MsoNormal"><span style="font-family: Arial;">I do not know how to intercept background ORA error example "ORA-01652 (See ORA-01652.ora-code.com ): unable to extend temp segment by 512 in tablespace TEMP" or </span></p> <pre><span style="font-size: 12pt; font-family: Arial;">"ORA-9291 (See ORA-9291.ora-code.com ) invalid device specified for archive destination "</span></pre><pre><span style="font -size: 12pt; font-family: Arial;"> </span></pre> <p class="MsoNormal"><span style="font-family: Arial;">Could you explain me how to do this?</span></p> <p class="MsoNormal"><span style="font-family: Arial;"> </span></p> <p class="MsoNormal"><span style="font-family: Arial;">Thanks for help</span>< /p> -- <br>Wojciech Skrzynecki<br>Database Administrator