在Oracle 11gr2中创建PL / SQL WatchDog / Daemon

时间:2015-03-24 08:36:46

标签: oracle plsql

我应该创建一个监视程序,在Oracle DB中每隔5分钟监视一个表中的字段。如果字段具有特定值(日期早于x),则应执行操作。 是否可以在PL / SQL中执行此操作?

如果不是,我应该创建一个脚本shell并从crontab调用它,或者使用调度程序。

4 个答案:

答案 0 :(得分:0)

  

如果字段具有特定值(日期早于x),则应执行操作。

您可以创建 TRIGGER 。如果插入新行使得日期列具有特定值,则在触发器中执行某些操作。

或许,您需要AFTER INSERT TRIGGER FOR EACH ROW,因为您需要引用:NEW值。

以下是有关CREATE TRIGGER的文档的链接。

如果您确实想将其作为预定作业,那么您可以使用 DBMS_SCHEDULER 。在10g版本发布之前,它是 DBMS_JOB

答案 1 :(得分:0)

您需要的是使用DBMS_SCHEDULER package

  

DBMS_SCHEDULER包提供了可从任何PL / SQL程序调用的调度函数和过程的集合。 (......)   Scheduler使用丰富的日历语法,使您能够定义重复的日程安排,例如"每周二和周五下午4:00。"或者"每个月的第二个星期三。"

答案 2 :(得分:0)

抱歉,也许我省略了要监控的字段的详细信息。我的意思是如果查询的结果: 从mytab中选择up_date,其中name_id ='test' 超过15分钟 然后 更新mytab set value_col ='no'其中name_id ='test'

但我不知道是否可以用触发器来做。有了SCHEDULER,我可以在间隔时间检查,可能是一个很好的解决方法。

答案 3 :(得分:0)

您可能仍然有一个AFTER UPDATE触发器,并在该触发器中检查更新的行是否是您要观看的行。像这样:

IF :old.name_id = 'test' THEN -- do something here END IF;