oracle数据库自动发邮件怎么实现报警功能
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍"oracle数据库自动发邮件怎么实现报警功能",在日常操作中,相信很多人在oracle数据库自动发邮件怎么实现报警功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2025年02月23日oracle数据库自动发邮件怎么实现报警功能
这篇文章主要介绍"oracle数据库自动发邮件怎么实现报警功能",在日常操作中,相信很多人在oracle数据库自动发邮件怎么实现报警功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"oracle数据库自动发邮件怎么实现报警功能"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
我们之前有个需求,需要每天检查oracle里的job是否执行成功,人工查比较麻烦,写了一个存储过程,定时发邮件。
一共涉及两个存储过程,第一个是设置发邮件给谁和发的内容。
CREATE OR REPLACE PROCEDURE CHECK_JOBS_GLAS /****** 检查定时任务(jobs)是否执行成功,并发邮件。by guoliang 2016年6月28日 ******/ V_NUMBER VARCHAR2(10); BEGIN -- 检查dba_jobs表查看是否有执行错误的job SELECT COUNT(1) INTO V_NUMBER FROM USER_JOBS WHERE SCHEMA_USER = 'Mxxxxx' AND failures <> '0'; IF V_NUMBER = '0' THEN send_mail_gl('guoliang@xxxx.cn','数据库定时任务执行成功','您好,数据库定时任务执行成功,请知悉'); ELSE send_mail_gl('guoliang@xxxx.cn','请注意,数据库定时任务执行失败','您好,数据库定时任务执行失败,请排查'); END IF;DBMS_OUTPUT.put_line(V_NUMBER); END;
第二个就是上面提到的send_mail_gl程序:
CREATE OR REPLACE PROCEDURE SEND_MAIL_GL(p_recipient VARCHAR2, -- 邮件接收人 p_subject VARCHAR2, -- 邮件标题 p_message VARCHAR2 -- 邮件正文)IS --下面四个变量请根据实际邮件服务器进行赋值 v_mailhost VARCHAR2(30) := 'smtp.exmail.qq.com'; --SMTP服务器地址 v_user VARCHAR2(30) := 'devops@xxx.cn'; --登录SMTP服务器的用户名 v_pass VARCHAR2(20) := 'xxxx'; --登录SMTP服务器的密码 v_sender VARCHAR2(50) := 'devops@xxx.cn'; --发送者邮箱,一般与 ps_user 对应 v_conn UTL_SMTP.connection; --到邮件服务器的连接 v_msg VARCHAR2(4000); --邮件内容BEGIN v_conn := UTL_SMTP.open_connection(v_mailhost, 25); UTL_SMTP.ehlo(v_conn, v_mailhost); --是用 ehlo() 而不是 helo() 函数 --否则会报:ORA-29279: SMTP 永久性错误 UTL_SMTP.command(v_conn, 'AUTH LOGIN'); -- smtp服务器登录校验 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 || '>'); --设置发件人 UTL_SMTP.rcpt(v_conn, '<' || p_recipient || '>'); --设置收件人 -- 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行 v_msg := 'Date:' || TO_CHAR(SYSDATE, 'yyyy mm dd hh34:mi:ss') || UTL_TCP.CRLF || 'From: ' || v_sender || '' || UTL_TCP.CRLF || 'To: ' || p_recipient || '' || UTL_TCP.CRLF || 'Subject: ' || p_subject || UTL_TCP.CRLF || UTL_TCP.CRLF -- 这前面是报头信息 || p_message; -- 这个是邮件正文 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 OTHERS THEN DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack); DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);END SEND_MAIL_GL;
到此,关于"oracle数据库自动发邮件怎么实现报警功能"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
邮件
数据
数据库
服务器
服务
任务
功能
报警
成功
内容
学习
正文
检查
登录
您好
信息
报头
更多
标题
过程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怀旧服服务器等级多少
2008服务器变态防护
软件开发 销售 财务处理
软件开发兼容性设计方案
单位服务器做一个简易访问网站
吐司 网络安全
互联网金融科技环境的含义
三级网络技术可用ip地址公式
网络安全法的发布机构
web服务器网页打开速度慢
数据库不能启动3414
软件开发人员劳动合同模板
网络安全管理不完善
题目是网络安全的手抄报怎么画
数据库用户自定义函数百度文库
梅州网络安全吗
扫车标志车品牌的软件开发
上海衍策网络技术
哲商网络技术
数据库给不及格加分
网络安全和量子信息关系
数据库更名需要脱机吗
如何实现登录界面验证数据库
学校宿舍里的网络安全问题
w8管理工具 服务器
安全的数据库管理
js 上传文件服务器
湖南回收服务器主板
高速服务器面积多大
东西湖软件开发多少钱