浅谈DBMS_SCHEDULER如何使用(3)

http://www.itjxue.com  2015-08-21 22:21  来源:未知  点击次数: 

外部程序: EXECUTABLE (外部程序可以是一个shell脚本,也可以是操作系统级别的指令).

  job_action: 根据job_type的不同,job_action有不同的含义.

  如果job_type指定的是存储过程,就需要指定存储过程的名字;

  如果job_type指定的是PL/SQL块,就需要输入完整的PL/SQL代码;

  如果job_type指定的外部程序,就需要输入script的名称或者操作系统的指令名

  enabled: 上面已经说过了,指定job创建完毕是否自动激活

  comments: 对于job的简单说明

  2. 指定job的执行频率

  如果我们创建了一个job,并且希望它按照我们指定的日期和时间来运行,就需要定义job的重复频度了. 例如每天运行,每周日的22:00运行, 每周一,三,五运行,每年的最后一个星期天运行等等.

  (说明:10G以前的版本,与操作系统的交互方面,实现的不是很好。例如要实现一个定期的rman备份任务,就需要结合OS的命令来实现,在UNIX下可以用crontab实现,在windows下用AT命令来实现)

  10G 在这方面有了很大的增强,因为创建job时可以直接指定操作系统的命令或者脚本,再合理的定义job的执行频率,可以很轻松地完成复杂的调度任务.

  10G 支持两种模式的repeat_interval,一种是PL/SQL表达式,这也是dbms_job包中所使用的,例如SYSDATE+1, SYSDATE + 30/24*60; 另一种就是日历表达式。

  例如MON表示星期一,SUN表示星期天,DAY表示每天,WEEK表示每周等等. 下面来看几个使用日历表达式的例子:

  repeat_interval => 'FREQ=HOURLY; INTERVAL=2'

  每隔2小时运行一次job

  repeat_interval => 'FREQ=DAILY'

  每天运行一次job

  repeat_interval => 'FREQ=WEEKLY; BYDAY=MON,WED,FRI"

  每周的1,3,5运行job

  repeat_interval => 'FREQ=YEARLY; BYMONTH=MAR,JUN,SEP,DEC; BYMONTHDAY=30'

  每年的3,6,9,12月的30号运行job

  用过crontab的人应该都有种似曾相识的感觉吧,呵呵

  下面再说说使用日历表达式的规则:

(责任编辑:IT教学网)

更多

推荐数据库文章