Oracle作业每天运行两次,时间间隔为
FREQ = DAILY; BYHOUR = 6,12; BYMINUTE = 30
现在我需要将工作重新安排在上午8点和下午12:30运行。如果不打扰已经开始运行的12:30时间表,我就无法做到。
答案 0 :(得分:2)
使用以下命令查询作业是否正在运行:
select owner , job_name , running_instance, session_id from all_scheduler_running_jobs
order by owner , job_name
并将您的间隔更改为:
FREQ=DAILY;BYHOUR=8,12;BYMINUTE=0,30;BYSETPOS=1,4
SETPOS
以下列方式运作:
╔═══╦══════╦════════╗
║ P ║ Hour ║ Minute ║
╠═══╬══════╬════════╣
║ 1 ║ 8 ║ 00 ║
║ 2 ║ 8 ║ 30 ║
║ 3 ║ 12 ║ 00 ║
║ 4 ║ 12 ║ 30 ║
╚═══╩══════╩════════╝
答案 1 :(得分:1)
如果您尝试通过以下方式执行此操作:FREQ=DAILY;BYHOUR=8,12;BYMINUTE=0,30;BYSECOND=0
,您的工作将每天运行,每天运行4次(上午8点,上午8点30分,下午12点,下午12点30分),这听起来不像你想要什么。
我认为唯一的方法是创建两个时间表:
begin
dbms_scheduler.create_schedule (
schedule_name => 'EIGHT_AM',
repeat_interval => 'FREQ=DAILY;BYHOUR=8;BYMINUTE=0;BYSECOND=0');
dbms_scheduler.create_schedule (
schedule_name => 'TWELVE_THIRTY_PM',
repeat_interval => 'FREQ=DAILY;BYHOUR=12;BYMINUTE=30;BYSECOND=0');
end;
然后将两个计划分配给调度程序作业:
exec dbms_scheduler.set_attribute('SCHEMA.MYJOB','REPEAT_INTERVAL','EIGHT_AM,TWELVE_THIRTY_PM');