oracle调度中使用schedule管理调度

开始前,先说一句:作为dba应该禁止所有应用使用dbms_job。

dbms_scheduler非常复杂,oracle在两本书中专门花费不少章节描述,这两本书分别是:

  1. Oracle® Database PL/SQL Packages and Types Reference
  2. Oracle® Database Administrator's Guide

如果要详细了解调度,建议详细阅读第二本书,之后再阅读第一本书中的有关章节

在云时代,资源管理变得非常重要,而dbms_scheduler可以紧密结合oracle自身的资源管理

对于开发人员而言,常见的问题就是:如果一个作业的调度时间不是那么规律,则应该如何调度。

这个好解决,可以使用dbms_scheduler.create_scheduler创建schedule对象,以下是例子:

begin
  DBMS_SCHEDULER.create_schedule(schedule_name   => 'SCH_DAY_10_30',
                                 start_date      => systimestamp,
                                 repeat_interval => 'FREQ=DAILY; byhour=10;byminute=30');

  DBMS_SCHEDULER.create_schedule(schedule_name   => 'SCH_DAY_20_10',
                                 start_date      => systimestamp,
                                 repeat_interval => 'FREQ=DAILY; byhour=20;byminute=10');

  dbms_scheduler.create_job(job_name        => '我的SCH测试',
                            repeat_interval => 'SCH_DAY_10_30,SCH_DAY_20_10',
                            job_type        => 'PLSQL_BLOCK',
                            job_action      => 'BEGIN NULL;END;',
                            enabled         => TRUE,
                            auto_drop       => FALSE,
                            comments        => null);
end;


通过使用调度,有几个好处:

  1. 只需要修改调度,不需要修改作业
  2. 简单易懂