我们经常需要对数据库做一些监控,同时希望监控能够自动以邮件的方式提醒我们,那么在oracle里面如何实现呢?
通过下面这个小的procedure来实现,即可。
create or replace procedure p_send_mail(send_to in varchar2,
from_where varchar2,subject varchar, message varchar2 ) is
conn utl_smtp.connection;
crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );
mesg VARCHAR2( 4000 );
begin
conn := utl_smtp.open_connection('10.1.10.2'); --mail server
utl_smtp.helo(conn, 'test.com');
utl_smtp.mail(conn, from_where);
utl_smtp.rcpt(conn, send_to);
utl_smtp.open_data(conn);
utl_smtp.write_data(conn, 'From: '|| from_where || utl_tcp.CRLF);
utl_smtp.write_data(conn, 'To: ' || send_to||utl_tcp.CRLF);
utl_smtp.write_data(conn, 'Subject: ' || subject|| utl_tcp.CRLF);
utl_smtp.write_data(conn, 'Content-Type: text/plain; Charset=GB2312' || utl_tcp.CRLF);
utl_smtp.write_raw_data(conn, utl_raw.cast_to_raw(utl_tcp.CRLF || message)); --转换为中文
utl_smtp.close_data(conn);
utl_smtp.quit(conn);
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
utl_smtp.quit(conn);
raise_application_error(-20000,
'Failed to send mail due to the following error: ' || sqlerrm);
end p_send_mail;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3618/viewspace-485533/
,如需转载,请注明出处,否则将追究法律责任。