10g 中新推出的SCHEDULER可能确实会让很多初接触的朋友感觉晕头晕脑,相比之前的jobs,SCHEDULER中新增的概念太多。比如说jobs,仍然可以理解成之前版本中的jobs,不过功能更加强大(注意10g中也仍然可以使用普通jobs,这是废话,相信看本篇文章的朋友目前应该还是这样在用),比如说program,指的是运行的程序(把要做什么单提出来了),比如说schedule,我将其翻译为调度(job我翻译为任务),定义执行的频率或者说周期。
3.1 创建和管理Schedule s
Schedule ,中文直译的话应该理解成调度,从名字来看,它是一个逻辑实体(逻辑,还实体,好矛盾),就是说当创建了schedule之后,数据库中就肯定存在这一对象,只不过这一对象是用来描述job的执行周期。
创建schedule可以通过DBMS_SCHEDULER.CREATE_SCHEDULE过程,该过程支持的参数如下:
SQL> desc dbms_scheduler.create_schedule;Parameter Type Mode Default? --------------- ------------------------ ---- -------- SCHEDULE_NAME VARCHAR2 IN START_DATE TIMESTAMP WITH TIME ZONE IN Y REPEAT_INTERVAL VARCHAR2 IN END_DATE TIMESTAMP WITH TIME ZONE IN Y COMMENTS VARCHAR2 IN Y
各参数分别代表含意如下:
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。
下面,创建一个schedule,指定调度为每周一次的频率,执行脚本如下:
SQL> begin 2 DBMS_SCHEDULER.CREATE_SCHEDULE ( 3 schedule_name => 'my_first_schedule', 4 start_date => SYSDATE, 5 repeat_interval => 'FREQ=WEEKLY; INTERVAL=1', 6 comments => 'Every 1 weeks'); 7 END; 8 /PL/SQL procedure successfully completed.
查询当前已经创建的schedules,可以通过*_SCHEDULER_SCHEDULES视图(含DBA_,ALL_,USER_),例如,查看当前用户拥有的schedules,执行语句如下:
SQL> select schedule_name,repeat_interval from user_scheduler_schedules;SCHEDULE_NAME REPEAT_INTERVAL------------------------------ ------------------------------MY_FIRST_SCHEDULE FREQ=WEEKLY; INTERVAL=1
如果要修改schedule属性的话,也是使用DBMS_SCHEDULER.SET_ATTRIBUTE过程,该过程的调用方式前面已经多次演示过,这里就不再重复举例了,仅说明一点,对于schedule来说,能够修改的属性包括:REPEAT_INTERVAL、COMMENTS、END_DATE、START_DATE以及EVENT_SPEC。
至于删除schedule,再简单不过,执行DBMS_SCHEDULER.DROP_SCHEDULE过程即可,例如:
SQL> EXEC DBMS_SCHEDULER.DROP_SCHEDULE('MY_FIRST_SCHEDULE');PL/SQL procedure successfully completed.
分享到:
相关推荐
从oracle库中导出自定义的job脚本。
oracle的job定时,henyouyongde ziliao
Oracle Job定时任务
oracle 创建job实例
简单的oracle job脚本,如有需求,清参考网上其他资源
写好的ORACLE创建JOB的脚本,可直接替换本次执行时间,脚本中的循环执行时间为每天晚上9点,想换的话网上都有
oracle job
Oracle Job 语法和时间间隔的设定
oracle_job的创建更改及删除 oracle 基础学习
oracle job 使用详解: 每天1点执行的oracle JOB样例
oracle job 的使用总结,通过dbms 创建job,从而执行存储过程
Oracle JOB 定时任务 定时执行存储过程
oracle JOB常见的执行时间, 在初学者定义JOB时,对于执行时间往往不知道如何设置. 该文档列举了常见的定义方式.可以由此进行扩展.
oracle job实例 测试通过
oracleJob创建job的脚本。 sql语句
这是本人在实践中总结的关于oracle中job的一些总结。希望能帮助大家在理论上和实际中解决一些问题。
自己整理的oracle計劃任務學習材料。可以快讀學習Oracle schedule相關功能
Oracle中job的使用详解 分享给大家,希望对各位有用。
关于oracle 数据库中job任务如何创建、查询和修改、如何启用job和停止job,可以帮助新手了解job的使用,包括任务运行时间的设置,具体的代码很实用,希望对你有帮助