Skip to main content

Gestion des JOBs

1. user doit avoir le droit EXECUTE sur SYS.DBMS_JOB
2. job_queue_processes doit être > 0 (modification possible en ligne avec alter system depuis 8.1.7)

connect user/password@DATAPROD

create table user.test_job (
  date_lancement date);
/

create or replace procedure user.my_test_job is
begin
  insert into user.test_job values (sysdate);
  commit;
end my_test_job;
/

-- Verification du lancement : la date/heure doivent être dans test_job
select to_char(date_lancement,'HH24:MI:SS') date_lancement from user.test_job;
/

-- Soumission d'un job unique (pour répéter, ajouter sysdate+1 (tous les jours) ou sysdate+1/1440 (toutes les minutes)
-- à la fin de dbms_job.submit, entre la date initiale et la dernière parenthèse
DECLARE
  jobno number;
  begin
   dbms_job.submit(jobno, --numero automatique par Oracle
     'begin
       my_test_job;
     end;',
    to_date('12-12-2006 10:59:00','dd-mm-yyyy hh24:mi:ss'));
   commit ;
 end ;
/

-- Suppression d'un job (uniquement par le user propriétaire, voir les numéros de jobs dans user_jobs (cf + bas))
exec dbms_job.remove(49);
/

-- forcer le lancement d'un job planifié
exec dbms_job.run('50');
/

-- voir les numeros de jobs de tous les users
connect system/manager@DATAPROD
select substr(to_char(job),1,2) jo,substr(schema_user,1,10) jouser,substr(what,1,20) jowhat,
to_char(last_date,'DD/MM/YY HH24:MI') jolast,to_char(next_date,'DD/MM/YY HH24:MI') jonext,failures from dba_jobs
/