Chinaunix

标题: oracle 10g的Schedule Job失败后发邮件通知管理员,怎么做? [打印本页]

作者: TOADLover    时间: 2009-10-19 11:55
标题: oracle 10g的Schedule Job失败后发邮件通知管理员,怎么做?
oracle 10g的Schedule Job失败后发邮件通知管理员,怎么做?
------------
以Job失败为触发事件,才发邮件,不要动Job里面的Procedures,应该怎么做?
作者: wq_1228    时间: 2009-10-19 11:55
可以监视下面的数据字典,SCHEDULER job的执行结果会自动存储到里面。
USER_SCHEDULER_JOB_LOG
SELECT job_name, job_class, operation, status FROM USER_SCHEDULER_JOB_LOG;

JOB_NAME         JOB_CLASS            OPERATION       STATUS
---------------- -------------------- --------------- ----------
JOB1             CLASS1               RUN             SUCCEEDED
JOB1             CLASS1               RUN             SUCCEEDED
JOB1             CLASS1               RUN             SUCCEEDED
JOB1             CLASS1               RUN             SUCCEEDED
JOB1             CLASS1               COMPLETED

定期启动一个监视程序,始终监视该表的数据,发现job失败时就可以启动邮件发送出来

[ 本帖最后由 wq_1228 于 2009-10-20 23:27 编辑 ]
作者: ziggler    时间: 2009-10-19 13:57
所幸,Oracle 为我们提供了发送邮件的工具包 UTL_SMTP,它最早出现在 Oracle 8.1.7 版本中。下面是我从网络上搜索相关资料后、综合整理、多处修正、数次调试、排除万难而写出的一个发送邮件的存储过程。可支持需用户验证的邮件服务器,中文 标题和中文内容无乱码,只还未支持附件的发送,相信这方面应用较少,需要的话再 Google 一下,且文后参考中有相应的链接。
Oracle 存储过程中发送邮件,并支持用户验证、中文标题和内容 - 溺水的鱼 - CSDN博客 (19 October 2009)
http://blog.csdn.net/alex197963/archive/2009/08/06/4417033.aspx
作者: TOADLover    时间: 2009-10-20 14:29
可是:
怎么

以Job失败为触发事件,才发邮件,不要动Job里面的Procedures
作者: ziggler    时间: 2009-10-20 14:34
标题: 回复 #3 TOADLover 的帖子
JOB如果是被OS调度的,需要OS机制来发送邮件;

如果JOB是被ORACLE调度的,需要ORACLE机制来发送邮件。
作者: TOADLover    时间: 2009-10-20 14:47
原帖由 ziggler 于 2009-10-20 14:34 发表
JOB如果是被OS调度的,需要OS机制来发送邮件;

如果JOB是被ORACLE调度的,需要ORACLE机制来发送邮件。


-----------
谢谢ziggler

是被ORACLE调度的!!
呵呵,我就是在问,怎么以job失败为触发事件,来发邮件,而不动job里面的Procedures。
作者: TOADLover    时间: 2009-10-20 14:49
标题: 回复 #4 ziggler 的帖子
需要ORACLE机制来发送邮件。。

嗯,是,是以ORACLE的机制来发送邮件。。。

我就是想问,怎么以JOB失败为触发事件,以ORACLE的机制来发送邮件。。。。
作者: ziggler    时间: 2009-10-20 15:01
标题: 回复 #6 TOADLover 的帖子
http://www.dbforums.com/oracle/1 ... job-email-snmp.html
作者: TOADLover    时间: 2009-10-23 12:58
原帖由 wq_1228 于 2009-10-20 23:23 发表
可以监视下面的数据字典,SCHEDULER job的执行结果会自动存储到里面。
USER_SCHEDULER_JOB_LOG
SELECT job_name, job_class, operation, status FROM USER_SCHEDULER_JOB_LOG;

JOB_NAME         JOB_CLASS ...

-------------------
这个数据字典可以被清空吗?
作者: TOADLover    时间: 2009-10-23 12:59
标题: 我整理了下思路:
就是job一旦失败,就“触发”(调用)某个Procedure发邮件给系统管理员。

该怎么做?
作者: wq_1228    时间: 2009-10-24 00:58
不知道您的oralce版本是什么样子的,如果是10.2的话,可以采用基于事件的SCHEDULER(Event-Based Scheduling )来达到这个目的。具体的说,需要2个SCHEDULER,一个就是你要监视的对象SCHEDULER,一个是你用来发邮件的SCHEDULER,他们之间通过设置event和queue来实现消息的传递和事件的触发,下面的地址,可以参照一下,
http://www.oracle.com/technology ... ba_part2.html#event

这里面的例子写的不是很详细,我也没有搞明白event和queue得关系,大家一起调查把。
以上
作者: wq_1228    时间: 2009-10-24 01:02
原帖由 TOADLover 于 2009-10-23 12:58 发表

-------------------
这个数据字典可以被清空吗?


没看明白什么意思,一般这些系统数据字典都是oracle内部处理自动进行更新和删除,没有很高的系统权限,应该不能清空吧
作者: cups_book    时间: 2009-10-27 18:05
标题: 回复 #11 wq_1228 的帖子
好像比较靠谱。。。。研究下。。。。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2