di lavoro di pianificazione per un paio di ore di tutti i giorni

Ho bisogno per pianificare un processo che a partire da 0600 fino al 1800. Il lavoro deve essere eseguito dopo ogni due ore. Per esempio 0800, 1000, 1200, 1400, 1600, 1800.

Qui è il codice che sono riuscito a fare finora:

DECLARE
     l_id binary_integer;
     begin
       sys.dbms_job.submit(job => l_id, what => 'integration_export;', interval => 'TRUNC(SYSDATE,''hh24'')+0/24/60');
       sys.dbms_output.put_line(l_id);    
end; 

Questo, naturalmente, eseguire il processo dopo ogni 2 ore senza sosta al 1801 – 0759. Come posso aggiungere questa restrizione?
Una cosa che ho pensato è quello di creare un altro programma procedura che si sveglia al 1801 e modifiche NEXT_DATE per questo lavoro. Tuttavia, mi chiedo se è una buona idea.

Qualche suggerimento?

Grazie in anticipo 🙂

  • Solo una piccola nota, ho lavorato in un sacco di posti che si desidera programmare il lavoro ogni x dell’intervallo, e sembrano sempre di scegliere “ora” esattamente, per motivi di ordine o qualcosa del genere. Si potrebbe trovare che ottenere il meglio valore dai sistemi scaglionando avvio del lavoro in modo che essi non cercano di inizio esattamente nello stesso momento-fanno circa 1 minuto dopo, circa 2 minuti dopo, quel genere di cose.
InformationsquelleAutor Jaanna | 2013-01-15

 

2 Replies
  1. 7

    dbms_job è vecchio. Mi piacerebbe consiglia di utilizzare il dbms_scheduler (introdotto in Oracle 10g) invece.

    dbms_scheduler.create_job(job_name        => 'YOUR_JOB',
                              job_type        => 'PLSQL_BLOCK', 
                              job_action      => 'integration_export;',
                              start_date      => systimestamp,
                              repeat_interval => 'freq=hourly; byhour=8,10,12,14,16,18; byminute=0; bysecond=0;',
                          enabled         => true,
                          auto_drop       => false,
                          comments        => 'some comment about the job');
  2. 2

    Invece di dmbs_job, uso avanzato dbms_scheduler. Qui è un esempio:

    begin
      DBMS_SCHEDULER.create_job (
        job_name        => 'Integration_export',
        job_type        => 'PLSQL_BLOCK',
        job_action      => 'integration_export;',
        start_date      => SYSTIMESTAMP,
        enabled         => TRUE,
        repeat_interval => 'freq=daily; byhour=6,8,10,12,14,16,18; byminute=0; bysecond=0');
    end;
    /

Lascia un commento