对于每个数据库不同级别的错误可以做不同的处理,如短信、邮件等
上周有个job 运行失败,也是最近太忙过了两天才发现,后加一job上班前自动运行,检查job运行历史记录,当有错误时发送email通知我。
procedure code:下面如邮箱地址,用户名,密码根据自己改一下,(红色字体问题),内容支持html标签,多收件人
上周有个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','<h2>ok</h2>');复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1295次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
780次阅读
2025-03-17 11:33:53
Oracle+Deepseek+Dify 实现数据库数据实时分析
bicewow
705次阅读
2025-03-06 09:41:49
【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
DarkAthena
569次阅读
2025-03-04 14:33:31
Oracle避坑指南|同名表导出难题:如何精准排除指定用户下的表?
szrsu
534次阅读
2025-03-05 00:42:34
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
457次阅读
2025-03-13 14:38:19
Ogg23ai高手必看-MySQL Innodb Cluster跟oracle的亲密接触
曹海峰
454次阅读
2025-03-04 21:56:13
【ORACLE】char类型和sql优化器发生的“错误”反应
DarkAthena
406次阅读
2025-03-04 23:05:01
什么,oracle 主机用户被删了?原来是虚惊一场!
Lucifer三思而后行
405次阅读
2025-03-03 21:12:09
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
348次阅读
2025-03-12 21:27:56
热门文章
移除DataGuard Standby配置导致Primary启动失败
2023-08-17 21242浏览
使用dblink产生的”SELECT /*+ FULL(P) +*/ * FROM XXXXX P ” 解析
2023-06-20 20872浏览
Troubleshooting 'ORA-28041: Authentication protocol internal error' change password 12c R2 DB
2020-04-08 13569浏览
浅谈ORACLE免费数据库Oracle Database XE (Express Edition) 版
2018-10-31 7471浏览
High wait event ‘row cache mutex’ in 12cR2、19c
2020-08-14 5516浏览