Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle PL/SQL :exemple DBMS_SCHEDULER.CREATE_JOB

L'exigence est de créer un travail dans Oracle pour s'exécuter quotidiennement à 3h00 et exécuter une procédure stockée pour effectuer une certaine tâche. Par exemple, le nom de la procédure stockée est PROC_DAILY_UPDATES .

Pour ce faire, l'exemple suivant utilise le DBMS_SCHEDULER.CREATE_JOB d'Oracle procédure :

1. Créer une tâche dans Oracle à l'aide de DBMS_SCHEDULER.CREATE_JOB

BEGIN
  DBMS_SCHEDULER.CREATE_JOB (
   job_name           =>  'JOB_DAILY_UPDATES',
   job_type           =>  'STORED_PROCEDURE',
   job_action         =>  'YOURSCHEMA.PROC_DAILY_UPDATES',
   start_date         =>  '28-SEP-19 03.00.00 AM America/New_York',
   repeat_interval    =>  'FREQ=DAILY;INTERVAL=1', 
   end_date           =>  NULL,
   auto_drop          =>   FALSE,
   job_class          =>  'SYS.DEFAULT_JOB_CLASS',
   comments           =>  'extract data');
END;
/

Après avoir créé la tâche ci-dessus, activez-la :

2. Activez le travail à l'aide de DBMS_SCHEDULER.ENABLE

BEGIN 
    DBMS_SCHEDULER.enable('JOB_DAILY_UPDATES'); 
END;
/

Pour confirmer que le travail a été créé avec succès, utilisez la requête suivante :

Select * from user_scheduler_jobs 
 where job_name = 'JOB_DAILY_UPDATES';

À partir de la requête ci-dessus, vous obtiendrez des informations telles que la date du dernier début, la date de la prochaine exécution et le statut d'activation du travail , etc.

Pour obtenir l'historique d'exécution des tâches, utilisez la requête suivante :

Select * from user_scheduler_job_run_details 
  where job_name = 'JOB_DAILY_UPDATES';

Vous pouvez également remarquer que dans le DBMS_SCHEDULER.CREATE_JOB ci-dessus exemple de procédure, j'ai utilisé le fuseau horaire America/New_York . Vous pouvez obtenir le fuseau horaire d'un pays spécifique à l'aide de la requête suivante :

SELECT DISTINCT tzname, TZ_OFFSET (tzname)
 FROM V$TIMEZONE_NAMES
ORDER BY tzname;

Sortie

America/Mexico_City -05:00 
America/Miquelon -02:00 
America/Moncton -03:00 
America/Monterrey -05:00 
America/Montevideo -03:00 
America/Montreal -04:00 
America/Montserrat -04:00 
America/Nassau -04:00 
America/New_York -04:00
...

Voir aussi :

  • Comment planifier une tâche dans Oracle SQL Developer ?
  • Apprenez à planifier des tâches/tâches avec Cron (crontab) sous Linux
  • Obtenir l'heure locale actuelle de n'importe quel pays en PL/SQL