oracle数据库自动发邮件怎么实现报警功能
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"oracle数据库自动发邮件怎么实现报警功能",在日常操作中,相信很多人在oracle数据库自动发邮件怎么实现报警功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
近几年网络技术发展
互联网佛山超炫科技盛会
工商银行软件开发上海
服务器提交mysql
护庙网络安全课读后感
搭建名片赞服务器
第一张表关联其他表数据库
网络安全毕业可以干什么工作
南通华信网络技术有限公司
代理服务器 设计
普陀区软件开发技术服务前景
交通局网络安全法
数据库技术种类
变声软件开发流程
上海服务器机柜批发厂家
轻量服务器远程连接提示密码错误
软件开发与设计模式
杭州榴娃互联网科技有限公司
三个月学会软件开发
香肠派对没有登陆队伍服务器
武汉大学网络安全调剂信息
网络安全部署电力新闻
2016软件开发就业前景
注册一个手机服务器
江门智启网络技术有限公司
宝德服务器硬盘online
红量网络技术有限公司
三级医院等级评审网络安全
数据库备份压缩
dedecms数据库