Oracle的工作與以下時間間隔重新安排運行一天兩次一個Oracle作業
FREQ = DAILY; BYHOUR = 6,12; BYMINUTE = 30
現在我需要重新計劃任務要在上午8點和下午12:30運行。我不能干擾已經運行的12:30時間表。
Oracle的工作與以下時間間隔重新安排運行一天兩次一個Oracle作業
FREQ = DAILY; BYHOUR = 6,12; BYMINUTE = 30
現在我需要重新計劃任務要在上午8點和下午12:30運行。我不能干擾已經運行的12:30時間表。
查詢作業是否使用運行:
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 ║
╚═══╩══════╩════════╝
如果嘗試通過以下方式進行:FREQ=DAILY;BYHOUR=8,12;BYMINUTE=0,30;BYSECOND=0
,您的工作將每天執行,每天執行4次(上午8點,上午8點30分,下午12點, nd 12:30 PM),這聽起來不像你想要的。
我認爲要做到這一點的唯一方法是創建兩個時間表:
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');
這將導致作業每天運行,4每天的時間:上午8點,上午8點30分,下午12點和下午12點30分,這聽起來不像是OP想要的。 –
@KrisJohnston謝謝你的評論!你是對的。我忘記包括'BYSETPOS = 1,4' – dcieslak
有趣...我不知道你可以分配職位給byhour,byminute等...我想唯一的方法是多個時間表(如在我的答案中) 。我必須記住這一點。 –