开始前,先说一句:作为dba应该禁止所有应用使用dbms_job。
dbms_scheduler非常复杂,oracle在两本书中专门花费不少章节描述,这两本书分别是:
- Oracle® Database PL/SQL Packages and Types Reference
- 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;
通过使用调度,有几个好处:
- 只需要修改调度,不需要修改作业
- 简单易懂