Oracle10g调度例行任务解放DBA时间
2007-05-11 12:21:19 来源:WEB开发网该日历语法的一个非常好的特色就是它消除了使用DBMS_JOB时可能会发生的调度表时间偏移。一个任务实例的起始时间不会影响下一个任务实例的起始时间。相反,调度表的重复时间间隔总是根据调度表的start_date重新进行计算。
该日历算法的通用性很好。 你不仅可以为每个 BY 关键字指定一个单一取值,而且还可以指定一个取值列表。例如,如果你希望总在星期一、星期三和星期五进行周期性加载,那么你可以指定重复时间间隔如下: FREQ=WEEKLY;INTERVAL=1;
BYDAY=MON,WED,FRI;BYHOUR=18;BYMINUTE=0;
BYSECOND=0
此调度表将每周重复一次 (INTERVAL=1);它将在每周的星期一、星期三和星期五启动任务 (BYDAY=MON,WED,FRI);并且这些任务将在这些天的每个下午6:00 p.m (BYHOUR=18; BYMINUTE=0;BYSECOND=0) 运行。
在你已经定义了程序和调度表之后,下一个步骤就是将这两个对象以一个任务的形式连接在一起。代码清单3显示一个对DBMS_SCHEDULER.CREATE_JOB的调用,它创建一个名为 LOADNEWCUSTOMERS的任务。此任务将根据PERIODICLOADS调度表运行LOADCUSTOMERS程序。
将调度表、程序和任务分离可以实际减少你的工作量。你可以在任何时间基于PERIODICLOADS调度表创建一个新的任务,而且此新任务将在与刚创建的LOADNEWCUSTOMERS任务相同的时刻和以相同的时间间隔运行。
代码清单2 中定义的调度表给出以下任务开始运行的时间:
2004年3月22日星期一,下午6:00。
2004年3月24日星期三,下午6:00。
2004年3月26日星期五,下午6:00。
当你将一个任务连接到此调度表时,该任务将在你将两者连接在一起的日期和时间之后的下一个调度时间运行。例如,如果你在2004年3月23日星期二创建一个如代码清单3 所示的任务,此任务将在3月24日星期三的下午6:00第一次运行。如果你拥有按照同一调度表运行的几个相关任务,并且你需要修改该调度表,那么对整个相关任务集只需修改一次。
更多精彩
赞助商链接