oracle告警邮件,oracle 用UTL_SMTP 发预警邮件

对于每个数据库不同级别的错误可以做不同的处理,如短信、邮件等

上周有个job 运行失败,也是最近太忙过了两天才发现,后加一job上班前自动运行,检查job运行历史记录,当有错误时发送email通知我。

procedure code:下面如邮箱地址,用户名,密码根据自己改一下,(红色字体问题),内容支持html标签,多收件人

CREATE OR REPLACE PROCEDURE  send_mail (p_recipient    VARCHAR2,   --Recipient

p_subject      VARCHAR2,    -- mail title

p_message      VARCHAR2     -- meail content

)

IS

v_mailhost   VARCHAR2(30) := 'smtp.mail.com';    --smtp mail server address

v_user  VARCHAR2(100) := 'name@mail.com';  --email account

v_pass       VARCHAR2 (20) := '123456';                      -- email account password

v_sender     VARCHAR2 (100) := 'name@mail.com'; --general, same as  ps_user

v_conn       UTL_SMTP.connection;

v_msg        VARCHAR2 (4000);                                 --emial content

l_to varchar2(4000);

n binary_integer;

l_tmp varchar2(4000);

BEGIN

--make connection to smtp

v_conn := UTL_SMTP.open_connection (v_mailhost, 25);

UTL_SMTP.ehlo (v_conn, v_mailhost);               --say hello to server

UTL_SMTP.command (v_conn, 'AUTH LOGIN');                     -- smtp server auth

UTL_SMTP.command (

v_conn,

UTL_RAW.cast_to_varchar2 (

UTL_ENCODE.base64_encode (UTL_RAW.cast_to_raw (v_user))));

UTL_SMTP.command (

v_conn,

UTL_RAW.cast_to_varchar2 (

UTL_ENCODE.base64_encode (UTL_RAW.cast_to_raw (v_pass))));

UTL_SMTP.mail (v_conn, v_sender);

--Recipient list e.g. a@anbob.com,b@anbob.com

l_to := p_recipient || ',';

loop

exit when l_to is null;

n := instr( l_to, ',' );

l_tmp := substr( l_to, 1, n-1 );

l_to := substr( l_to, n+1 );

UTL_SMTP.rcpt (v_conn, l_tmp);

end loop;

v_msg :=

'Date:'

|| TO_CHAR (SYSDATE, 'dd mon yy hh24:mi:ss')

|| UTL_TCP.CRLF

|| 'From: '

|| v_sender

|| '

|| v_sender

|| '>'

|| UTL_TCP.CRLF

|| 'To: '

|| p_recipient

|| '

|| p_recipient

|| '>'

|| UTL_TCP.CRLF

|| 'Subject: '

|| p_subject

|| UTL_TCP.CRLF

|| 'Content-Type: text/html'

|| UTL_TCP.CRLF

|| p_message;

-- start the mai body

UTL_SMTP.open_data (v_conn);

UTL_SMTP.write_raw_data (v_conn, UTL_RAW.cast_to_raw (v_msg));

UTL_SMTP.close_data (v_conn);

UTL_SMTP.quit (v_conn);

exception

when utl_smtp.transient_error or utl_smtp.permanent_error then

utl_smtp.quit(v_conn);

raise;

when others then

raise;

END send_mail;

测试一下自己的地址

exec send_mail('admin@anbob.com,dba@anbob.com','warning:test','

ok

');

打赏

8732971891f4ba05583674ca6b8145ac.png微信扫一扫,打赏作者吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值