Bonjour à tous!

J'ai un petit problème pour faire exécuter un job via dbms_scheduler (que je suis en train de découvrir et de tester).

J'ai d'abord créé un job de test :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BEGIN
   DBMS_SCHEDULER.create_job (
      job_name        =>  'TEST_JOB',
      job_type        => 'PLSQL_BLOCK',
      job_action      => 'BEGIN
                             INSERT INTO TEMP_JOB
                             SELECT CLIENT_CODE
                             FROM FACTURES
                             WHERE CLIENT_TYPE IN (1,5,8)
                             AND INVOICE_DATE BETWEEN ''01/01/2011'' and ''28/02/2011'';
 
                             commit; 
 
                          END;',
      start_date      => sysdate + 5/1440,
      repeat_interval => 'FREQ=MINUTELY; INTERVAL=10',
      enabled         => TRUE);
END;

Ce job marche parfaitement et s'exécute sans problème. Jusque là tout va bien, sauf que moi, pour des raisons de monitoring, j'ai besoins que le JOB s'exécute sur un service particulier (et non le SYS$USER comme c'est le cas par défaut).

En cherchant dans la doc, j'ai vu qu'il fallait créer une "JOB_CLASS" faisant référence à ce service, et d'utiliser cette classe pour l'éxécution du JOB.

Donc pas de problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Begin
dbms_scheduler.create_job_class(
  job_class_name => 'MY_JOB_CLASS',
  service => 'MyServiceName',
  comments => 'Test job_class');
end;
=> La classe se créé bien. Et la je drop mon job initial pour le recréé avec le paramètre "Job_class" (j'aurai pu faire un set_attribute mais bon ^^) :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
BEGIN
   DBMS_SCHEDULER.create_job (
      job_name        =>  'TEST_JOB',
      job_type        => 'PLSQL_BLOCK',
      job_class => 'MY_JOB_CLASS',
      job_action      => 'BEGIN
                             INSERT INTO TEMP_JOB
                             SELECT_XXXXX
                             FROM FACTURES
                             WHERE CLIENT_TYPE IN (1,5,8)
                             AND INVOICE_DATE BETWEEN ''01/01/2011'' and ''28/02/2011'';
 
                             commit; 
 
                          END;',
      start_date      => sysdate + 5/1440,
      repeat_interval => 'FREQ=MINUTELY; INTERVAL=10',
      enabled         => TRUE);
END;
Mon job se créé sans erreur, mais par contre, il ne s'exécute jamais... Et c'est là que j'aurai besoin de vous : Pourquoi?????

Merci d'avance