设置Repeat Interval
Job 和Schedule中REPEAT_INTERVAL参数都是用来控制执行的频率或周期,虽然说周期是一个时间性概念,不过REPEAT_INTERVAL指定的时候并不是一个时间值,而是由一组关键字描述的时间。
除了前面介绍Job和Schedule的REPEAT_INTERVAL参数时,提到该参数拥有FREQ以及INTERVAL两个关键字,其实除此之外,还有如BYMONTH、BYWEEKNO、BYYEARDAY、BYDATE等等参数,可以用来进行更精确的定义,比如通过BYMONTH关键字指定调度运行的月份,BYDAY指定调度在哪天运行等等。
REPEAT_INTERVAL 参数的详细语法如下:
repeat_interval = regular_schedule | combined_schedule
==============================
regular_schedule = frequency_clause
[";" interval_clause] [";" bymonth_clause] [";" byweekno_clause]
[";" byyearday_clause] [";" bydate_clause] [";" bymonthday_clause]
[";" byday_clause] [";" byhour_clause] [";" byminute_clause]
[";" bysecond_clause] [";" bysetpos_clause] [";" include_clause]
[";" exclude_clause] [";" intersect_clause][";" periods_clause]
[";" byperiod_clause]
==============================
combined_schedule = schedule_list [";" include_clause]
[";" exclude_clause] [";" intersect_clause]
frequency_clause = "FREQ" "=" ( predefined_frequency | user_defined_frequency )
predefined_frequency = "YEARLY" | "MONTHLY" | "WEEKLY" | "DAILY" |
"HOURLY" | "MINUTELY" | "SECONDLY"
user_defined_frequency = named_schedule
==============================
interval_clause = "INTERVAL" "=" intervalnum
intervalnum = 1 through 99
bymonth_clause = "BYMONTH" "=" monthlist
monthlist = monthday ( "," monthday)*
month = numeric_month | char_month
numeric_month = 1 | 2 | 3 ... 12
char_month = "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
"JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
byweekno_clause = "BYWEEKNO" "=" weeknumber_list
weeknumber_list = weeknumber ( "," weeknumber)*
weeknumber = [minus] weekno
weekno = 1 through 53
byyearday_clause = "BYYEARDAY" "=" yearday_list
yearday_list = yearday ( "," yearday)*
yearday = [minus] yeardaynum
yeardaynum = 1 through 366
bydate_clause = "BYDATE" "=" date_list
date_list = date ( "," date)*
date = [YYYY]MMDD [ offset | span ]
bymonthday_clause = "BYMONTHDAY" "=" monthday_list
monthday_list = monthday ( "," monthday)*
monthday = [minus] monthdaynum
monthdaynum = 1 through 31
byday_clause = "BYDAY" "=" byday_list
byday_list = byday ( "," byday)*
byday = [weekdaynum] day
weekdaynum = [minus] daynum
daynum = 1 through 53 /* if frequency is yearly */
daynum = 1 through 5 /* if frequency is monthly */
day = "MON" | "TUE" | "WED" | "THU" | "FRI" | "SAT" | "SUN"
byhour_clause = "BYHOUR" "=" hour_list
hour_list = hour ( "," hour)*
hour = 0 through 23
byminute_clause = "BYMINUTE" "=" minute_list
minute_list = minute ( "," minute)*
minute = 0 through 59
bysecond_clause = "BYSECOND" "=" second_list
second_list = second ( "," second)*
second = 0 through 59
bysetpos_clause = "BYSETPOS" "=" setpos_list
setpos_list = setpos ("," setpos)*
setpos = [minus] setpos_num
setpos_num = 1 through 9999
==============================
include_clause = "INCLUDE" "=" schedule_list
exclude_clause = "EXCLUDE" "=" schedule_list
intersect_clause = "INTERSECT" "=" schedule_list
schedule_list = schedule_clause ("," schedule_clause)*
schedule_clause = named_schedule [ offset ]
named_schedule = [schema "."] schedule
periods_clause = "PERIODS" "=" periodnum
byperiod_clause = "BYPERIOD" "=" period_list
period_list = periodnum ("," periodnum)*
periodnum = 1 through 100
==============================
offset = ("+" | "-") ["OFFSET:"] duration_val
span = ("+" | "-" | "^") "SPAN:" duration_val
duration_val = dur-weeks | dur_days
dur_weeks = numofweeks "W"
dur_days = numofdays "D"
numofweeks = 1 through 53
numofdays = 1 through 376
minus = "-"
这个语法形式看起来复杂无比,其实实用起来很简单,之所以看起来复杂,是因为其功能太过灵活(之前的三思系列笔记中,已经阐述过灵活与复杂的关系),这里不准备逐条解释每一个语法细节,下面将着重通过一些常用设置,希望能够更有助于广大同仁的理解。
例如:设置任务仅在周5的时候运行:
REPEAT_INTERVAL => 'FREQ=DAILY; BYDAY=FRI';
REPEAT_INTERVAL => 'FREQ=WEEKLY; BYDAY=FRI';
REPEAT_INTERVAL => 'FREQ=YEARLY; BYDAY=FRI';
上述三条语句虽然指定的关键字小有差异,不过功能相同。
设置任务隔一周运行一次,并且仅在周5运行:
REPEAT_INTERVAL => 'FREQ=WEEKLY; INTERVAL=2; BYDAY=FRI';
设置任务在当月最后一天运行:
REPEAT_INTERVAL => 'FREQ=MONTHLY; BYMONTHDAY=-1';
设置任务在3月10日运行:
REPEAT_INTERVAL => 'FREQ=YEARLY; BYMONTH=MAR; BYMONTHDAY=10'; REPEAT_INTERVAL => 'FREQ=YEARLY; BYDATE=0310';
上述两条语句功能相同。
设置任务每10隔天运行:
REPEAT_INTERVAL => 'FREQ=DAILY; INTERVAL=10';
设置任务在每天的下午4、5、6点时运行:
REPEAT_INTERVAL => 'FREQ=DAILY; BYHOUR=16,17,18';
设置任务在每月29日运行:
REPEAT_INTERVAL => 'FREQ=MONTHLY; BYMONTHDAY=29';
设置任务在每年的最后一个周5运行:
REPEAT_INTERVAL => 'FREQ=YEARLY; BYDAY=-1FRI';
设置任务每隔50个小时运行:
REPEAT_INTERVAL => 'FREQ=HOURLY; INTERVAL=50';
另外,你是否在怀念常规job中设置interval的简便,虽然功能较弱,但是设置操作非常简单,无须懊恼,其实SCHEDULER中的REPEAT_INTERVAL也完全可以按照那种方式设置,前面都说了,REPEAT_INTERVAL实际上是指定周期,直接指定一个时间值,当然也是周期喽。
比如说,设置任务每天执行一次,也可以设置REPEAT_INTERVAL参数值如下:
REPEAT_INTERVAL => 'trunc(sysdate)+1'
又比如设置任务每周执行一次:
REPEAT_INTERVAL => 'trunc(sysdate)+7'
不过需要注意,这种方式仅用于创建SCHEDULER中jobs时使用,不能用于schedule。
分享到:
相关推荐
本文主要探讨了神经网络(Neural Networks, NN)在作业车间调度问题(Job-shop Scheduling Problem, JSP)中的应用。作业车间调度是制造业中一个重要的决策过程,涉及在时间和资源约束下对活动进行排序以达到特定的...
在IT行业中,"Renewal Schedular_java_transportationj5o_zip_"这一标题暗示了我们正在处理一个基于Java编程语言的项目,该项目专注于创建或更新一个调度器,可能用于管理与运输相关的任务。让我们深入探讨Java编程...
3. Fair schedular:公平调度,所有的 job 具有相同的资源。 5. MapReduce 编程 MapReduce 是 Hadoop 的核心编程模型,可以使用 Java、Hive 等语言编写 MapReduce 程序。 以下是一个使用 Java 编写的 MapReduce ...
如何设置? 首先,请安装git,然后克隆此项目。如果您不知道如何,请放弃! 考夫兰(Kaufland)一直在招聘。 安装python和pip $ sudo apt-get update $ sudo apt upgrade $ sudo apt install python2.7 python-pip...
日程安排描述: 这是一个由javascript驱动的网络应用程序,它允许用户编写从9:00 AM到5:00 PM的每小时描述。 如果按下保存按钮,则将其存储到本地存储中。目录示范:贡献:部署的链接: 问题: GitHub档案: 电子...
在此基础上,`RR_Scheduler.java`实现了著名的轮转调度算法(Round Robin),而`SJF_Scheduler.java`则实现了短作业优先(Shortest Job First)调度算法。这两种算法各有特点,轮转调度注重公平性,每个进程都能获得...
这款应用的核心功能包括日程添加、提醒设置以及时间管理,有助于提高个人生产力。由于描述中提到“链接到已部署的应用程序”,我们可以假设这个项目已经完成了开发阶段,并且可以在网络上进行访问和测试。 【标签】...
此外,开发者可能使用了Android的AlarmManager服务来设置提醒,确保用户不会错过任何一堂课。 UI设计是此应用的另一个关键方面。Android Studio提供的布局工具被用于创建用户友好的界面,可能包括日历视图、时间轴...
9. **配置管理**:项目可能包含配置文件,用于设置数据库连接信息、迁移参数等,这使得用户可以根据自己的环境进行灵活配置。 10. **测试与部署**:为了确保代码质量,项目可能包含了单元测试和集成测试。部署方面...
启动弹性搜索 elasticsearch --config=/usr/local/opt/elasticsearch/config/elasticsearch.yml elasticsearch 客户端在 / 自述 此自述文件通常会记录启动和运行应用程序所需的任何步骤。 您可能想要涵盖的内容:...
Linux-CFS计划中的AVL树实现 描述:Linux内核的内存管理是通过CFS Scheduler基于Red-Black树进行的,因此我们尝试使用AVL树来修改Red-Black树,因为与Red-Black相比,搜索AVL树的时间更少,但是我们需要在AVL中插入...
在计算机操作系统中,CPU 调度程序(CPU Scheduler)是一个至关重要的组件,它负责决定哪个进程或线程应该在何时获得 CPU 的执行权。在这个名为"CPU-Scheduler-Java"的项目中,开发者实现了一个 CPU 调度算法的 Java...
Adlogix事件计划程序Adlogix事件计划程序库提供了一种使用Martin Fowler的“管理重复事件的方法。 代码和文档的基础最初是从派生而来并且经过了完全重构,使其更加轻巧,并且具有更少的依赖性!...
* schedular:schedular是一个类,它可以用来创建一个调度程序实例。 * run():run()是一个函数,它将调度程序中的事件/条目按照顺序被调用。 * enterabs():enterabs()是一个函数,它本质上将事件添加到调度程序的...
2. **灵活的调度**:除了设置开始时间和重复间隔外,还可以基于日期、时间等条件设置触发器,实现更复杂的任务调度逻辑。 3. **线程池支持**:Quartz.NET使用线程池来执行任务,提高了效率,减少了资源消耗。 4. **...
COMP3100项目项目名称(第1页) 用于分布式系统的Cloud Job Schedular或经济高效的资源分配器(可以执行以下两种操作之一,也可以选择其中一种)组成员(第1页) 姓,名(学生ID)Zoheb Eftali()Bhavish Dhanda...
这是一个用于计划公共交通(如铁路,航空公司,公共汽车等)的简单应用程序。...还包括计时器,用于每秒更新页面。 Moment.js用于操纵时间并使之变得人性化。 用户可以执行所有CRUD操作。 用户输入的数据被保存在...
A7是基于编辑器的PIM(个人信息管理器)或Schedular。 我希望每次都有在线和离线更好的时间表。 最好在开/关工具之间进行一些协作,但这不是次要的事情。 对于脱机,最后我只选择折叠成3倍(A4-> A5-> A6-> A7)和...
另外,本版本取消了My Schedular功能,该功能将增加在启明星工作日志worklog系统里(可以免费到官网下载), 启明星工作室提供很多企业办公用品,详细请访问我们的官网 http://www.dotnetcms.org 版本更新说明...
操作系统^ 1/2 关于 CPU调度程序确定执行其调度进程的顺序; 它根据跟踪系统中的进程及其状态的特定数据结构来决定哪个进程将运行。 进程一经创建,便具有以下三种状态之一:正在运行,就绪,已阻塞(正在执行I / O...