2017-04-27 3 views
0

est-il possible de créer un travail avec un intervalle de répétition dans 2 jours et heures différents dans un travail? Par exemple chaque lundi à 02:00: AM et chaque FRI à 15:00.Oracle Scheduler - intervalle de répétition 2 jours et heures différents

repeat_interval  => 'FREQ=DAILY;BYDAY=MON; 
          byhour=02; byminute=00; bysecond=00', 

repeat_interval  => 'FREQ=DAILY;BYDAY=FRI; 
          byhour=15; byminute=00; bysecond=00', 

ces fréquences, mais ensemble dans un travail repeat_interval.

Merci

Répondre

1

Créer un calendrier nommé pour l'un des intervalles et l'utilisation comprennent comme

Version révisée: En raison de INCLUDE ne supporte pas byminute, byhour .etc je l'ai changé comme ça, ce que je fait, décrit premier emploi en tant que journalier, déclenche chaque vendredi, mais a ajouté un horodatage de début, et a pointé un temps. donc il se répète à ce moment-là chaque vendredi, et que l'inclure dans un deuxième travail.

declare 
    ts timestamp := to_timestamp_tz('28/04/2017 09:00:00', 
            'DD/MM/YYYY HH24:MI:SS'); 
begin 

    dbms_scheduler.create_schedule('FRIDAY_SCHED', start_date => ts, 
            repeat_interval => 'FREQ=DAILY;BYDAY=FRI;'); 
    dbms_scheduler.create_schedule('ALL_SCHED', 
            repeat_interval => 'FREQ=DAILY;BYDAY=MON; byhour=02; byminute=00; bysecond=00;INCLUDE=FRIDAY_SCHED'); 
end; 

Vous pouvez tester la période de cette façon

declare 
    start_date timestamp; 
    return_date_after timestamp; 
    next_run_date timestamp; 
begin 
    start_date := to_timestamp_tz('28/04/2017 09:00:00', 
            'DD/MM/YYYY HH24:MI:SS'); 
    return_date_after := start_date; 
    for i in 1 .. 5 loop 
     DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING('FREQ=DAILY;BYDAY=FRI;', 
               start_date, return_date_after, 
               next_run_date); 
     DBMS_OUTPUT.PUT_LINE('next_run_date: ' || next_run_date); 
     return_date_after := next_run_date; 
    end loop; 
end; 
+0

Il ne fonctionne pas. 27422. 00000 - "utilisation de% s non prise en charge dans l'application de calendrier incorporée \"% s \ "" * Cause: La définition du calendrier principal utilisait un calendrier incorporé dans INCLUDE, EXCLUDE, INTERSECT, ou la clause FREQ pour laquelle des limitations supplémentaires s'appliquent. * Action: supprime la clause spécifique de la définition du calendrier. – palo173

+0

@ palo173 voir la réponse modifiée. Ça marche. – Seyran