如何使用 Oracle dbms_scheduler 到 运行 程序每 5 分钟,每天从 7:30am 到 21:30pm?

how to use Oracle dbms_scheduler to run procedure every 5 minutes, every day from 7:30am to 21:30pm?

我正在使用 Oracle 12c 数据库。我必须安排一个程序,从 7:30am 到 21:30pm 每天每 5 分钟 运行。 从 08:00 到 20:55

每天实际执行 运行 秒
begin
dbms_scheduler.create_job(
job_name=>'JobInvioSmsVa',
job_type=>'plsql_block',
repeat_interval=> 'FREQ=DAILY;BYHOUR=8,9,10,11,12,13,14,15,16,17,18,19,20;BYMINUTE=0,5,10,15,20,25,30,35,40,45,50,55',
job_action=>'INVIO_SMS_VA;',
enabled=>true);
end;
/

您可以简单地:

  begin
    dbms_scheduler.create_job(
    job_name=>'JobInvioSmsVa',
    job_type=>'plsql_block',
    repeat_interval=> 'FREQ=DAILY;BYHOUR=7,8,9,10,11,12,13,14,15,16,17,18,19,20,21;BYMINUTE=0,5,10,15,20,25,30,35,40,45,50,55',
    job_action=>
     'begin
       if sysdate 
         between trunc(sysdate)+7.5/24 
         and trunc(sysdate)+21.5/24 
       then
         INVIO_SMS_VA;
       end if;  
     end;',
    enabled=>true);
    end;
    /

您可以创建三个时间表:

begin

dbms_scheduler.create_job(
   job_name=>'JobInvioSmsVa',
   job_type=>'plsql_block',
   repeat_interval=> 'FREQ=DAILY;BYHOUR=8,9,10,11,12,13,14,15,16,17,18,19,20;BYMINUTE=0,5,10,15,20,25,30,35,40,45,50,55',
   job_action=>'INVIO_SMS_VA;',
   enabled=>true);

dbms_scheduler.create_job(
   job_name=>'JobInvioSmsVa_morning',
   job_type=>'plsql_block',
   repeat_interval=> 'FREQ=DAILY;BYHOUR=7;BYMINUTE=30,35,40,45,50,55',
   job_action=>'INVIO_SMS_VA;',
   enabled=>true);

dbms_scheduler.create_job(
   job_name=>'JobInvioSmsVa_evening',
   job_type=>'plsql_block',
   repeat_interval=> 'FREQ=DAILY;BYHOUR=21;BYMINUTE=0,5,10,15,20,25,30',
   job_action=>'INVIO_SMS_VA;',
   enabled=>true);

end;

/

INCLUDE 子句不能与 BYHOURBYMINUTE 组合使用,因此您不能将它们合并为一个时间表。