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.
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 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 );
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
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;
Si je fait tourner la procédure "à la main", je n'ai aucune erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ORA-00942: Table ou vue inexistante
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
Partager