admin管理员组

文章数量:1530085

在oracle 10g之前,我们了解了job,program,在自己的应用里也大规模使用这些对象。oracle在10g之后又引入了scheduler的对象,相信很多朋友一定不太明白oracle的意图。

相比之前的jobs,SCHEDULER中新增了很多概念。比如说jobs,仍然可以理解成之前版本中的jobs,不过功能更加强大(注意10g中也仍然可以使用普通jobs),

比如说program,指的是运行的程序(说白了就是干活的),比如说schedule,我将其翻译为调度(大概就是描述什么时间怎么干的一个时间调度器),定义执行的频率或者说周期。

1、创建Schedule

从名字来看,它是一个逻辑实体,就是说当创建了schedule之后,数据库中就肯定存在这一对象,只不过这一对象是用来描述job的执行周期。

创建schedule可以通过DBMS_SCHEDULER.CREATE_SCHEDULE过程

举个例子:

begin

dbms_scheduler.create_schedule(schedule_name   => 'myschedule',

start_date      => sysdate,

repeat_interval => 'FREQ=DAILY; INTERVAL=1',

comments        => 'Every 1 weeks');

end;

/

下面对各参数分别代表含意解释一下

SCHEDULE_NAME     指定schedule名称,注意名称要求唯一性。

START_DATE        指定该调度的开始时间,可为空,当为空时表示该调度暂不起用。

REPEAT_INTERVAL   指定调度的执行频率或周期。

END_DATE          指定调度的结束时间,可为空,为空时就表示该调度将一直进行。

COMMENTS          注释信息。

这其中,比较复杂的是REPEAT_INTERVAL参数,对于这个参数大家应该不会太陌生,因为前面介绍Jobs,也曾经提到过同名的参数,

Schedules中的REPEAT_INTERVAL参数和Jobs中的REPEAT_INTERVAL参数功能完全相同,甚至参数格式也一模一样。

REPEAT_INTERVAL 参数的语法结构比较复杂。其中最重要的是FREQ和INTERVAL两个关键字。

FREQ     关键字用来指定间隔的时间周期,可选参数有:YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, and SECONDLY,分别表示年、月、周、日、时、分、秒等单位。

INTERVAL 关键字用来指定间隔的频繁,可指定的值的范围从1-99。

比如说,当指定REPEAT_INTERVAL=>'FREQ=DAILY;INTERVAL=1';就表示每天执行一次,如果将INTERVAL改为7就表示每7天执行一次,效果等同于FREQ=WEEKLY;INTERVAL=1。

2、管理Schedule

查询当前已经创建的schedules,可以通过*_SCHEDULER_SCHEDULES视图(含DBA_,ALL_,USER_),例如,查看当前用户拥有的schedules,执行语句如下:

select schedule_name,repeat_interval from user_scheduler_schedules;

SCHEDULE_NAME                  REPEAT_INTERVAL

------------------------------ ------------------------------

MYSCHEDULE                     FREQ=DAILY; INTERVAL=1

如果要修改schedule属性的话,也是使用DBMS_SCHEDULER.SET_ATTRIBUTE过程,该过程的调用方式跟之前的一样,这里就不再重复举例了,仅说明一点,

对于schedule来说,能够修改的属性包括:REPEAT_INTERVAL、COMMENTS、END_DATE、START_DATE以及EVENT_SPEC。

如果要删除schedule,再简单不过,执行DBMS_SCHEDULER.DROP_SCHEDULE过程即可

begin

DBMS_SCHEDULER.DROP_SCHEDULE('myschedule');

end;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub/31358702/viewspace-2154355/,如需转载,请注明出处,否则将追究法律责任。

本文标签: 语句第四部分特性ORACLE