oracle数据库自动发邮件怎么实现报警功能
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍"oracle数据库自动发邮件怎么实现报警功能",在日常操作中,相信很多人在oracle数据库自动发邮件怎么实现报警功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
数据库中宏的关闭是什么
数据库技术及应用超星答案
信息网络安全杂志审稿
戴尔服务器软raid评测
广东pdu服务器电源哪家专业
网络安全态势可视化
服务器里面的内存是什么
软件开发中耗时最多的环节
sql数据库修改连接口令
儿童画网络安全的内容
计算机网络技术有什么素养
软件开发工程师如何转互联网
防网络安全知识ppt课件
数据库建表的用例网址
南京趣融网络技术有限公司产品
fifa15数据库
邢台网络技术产品介绍
杭州软件开发者技术网站
网络安全监测心率失常
tle网络安全吗
校园管理系统软件开发
怎么设置服务器的远程ip
福建品牌软件开发电话多少
我的世界服务器里的英文
广东数据服务器优势
国泰安怎么查并购数据库
网络安全综合治理自查报告
数据库的检索点或检索途径有哪些
网络安全法立体指导思想
数据库安全存取控制