   |  | | 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
|
|
 |