Bonjour,

J'ai un job qui tourne tous les matins à 1 h.
Ce job est constitué d'un block anonyme qui fait appel à une procédure stockée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
SYS.DBMS_SCHEDULER.CREATE_JOB
    (
       job_name        => 'PLUTON.REFRESH_TASK_DAILY'
      ,start_date      => TO_TIMESTAMP_TZ('2011/12/14 01:00:00.000000 +01:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
      ,repeat_interval => 'FREQ=DAILY;INTERVAL=1; BYHOUR=1; BYMINUTE=0;BYSECOND=0'
      ,end_date        => NULL
      ,job_class       => 'DEFAULT_JOB_CLASS'
      ,job_type        => 'STORED_PROCEDURE'
      ,job_action      => 'PLUTON.PKGTASK_T.REFRESH_ALL'
      ,comments        => NULL
    );
Cette procédure mets à jour une table (TASK) pour laquelle il existe des triggers qui eux-même font appel à DBMS_AQ (enqueue)
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
CREATE OR REPLACE TRIGGER TASK_AUIDR
   AFTER DELETE OR INSERT OR UPDATE
   ON PLUTON.TASK
   REFERENCING NEW AS New OLD AS Old
   FOR EACH ROW
DECLARE
   v_task_msg   T_TASK_msg;
   v_old_task   t_task;
   v_new_task   t_task;
 BEGIN
   IF DELETING OR UPDATING
   THEN
      v_old_task :=
         t_task (t_task_key (t_mar_key (:old.num_aff,
                                        :old.num_ave,
                                        :old.soc_num_soc,
                                        :old.num_mar),
                             :old.cod_typ_task),
                 :old.nb,
                 :old.mnt,
                 :old.cod_dev,
                 :old.dat_task);
   END IF;
   IF INSERTING OR UPDATING
   THEN
      v_new_task :=
         t_task (t_task_key (t_mar_key (:new.num_aff,
                                        :new.num_ave,
                                        :new.soc_num_soc,
                                        :new.num_mar),
                             :new.cod_typ_task),
                 :new.nb,
                 :new.mnt,
                 :new.cod_dev,
                 :new.dat_task);
   END IF;
   IF DELETING
   THEN
      -- envoie via un pipe aux ecran Forms( suppression tache)
      pkgtaskmsgqueue.enqueue (t_task_msg (v_old_task, 'D'));
   ELSIF INSERTING
   THEN
      pkgtaskmsgqueue.enqueue (t_task_msg (v_new_task, 'I'));
   ELSE
      IF v_old_task.task_key != v_new_task.task_key
      THEN
         pkgtaskmsgqueue.enqueue (t_task_msg (v_old_task, 'D'));
         pkgtaskmsgqueue.enqueue (t_task_msg (v_new_task, 'I'));
      ELSE
         pkgtaskmsgqueue.enqueue (t_task_msg (v_new_task, 'U'));
      END IF;
   END IF;
END;
Or, depuis trois jour, ces jobs ont un statut "FAILED" dans le LOG avec une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ORA-00942: Table ou vue inexistante
Si je fait tourner la procédure "à la main", je n'ai aucune erreur.
Quelqu'un saurait-il me dire comment je peux avoir des infos plus précises sur l'erreur (trace, log ou autre) et quelle table fait défaut (je pense qu'il s'agit d'une table ou d'une vue AQ, mais laquelle ?)

Merci
PS : version d'oracle dans la signature