IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

[10g] Erreur 942 dans DBMS_SCHEDULER


Sujet :

Administration Oracle

  1. #1
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut [10g] Erreur 942 dans DBMS_SCHEDULER
    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

  2. #2
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Je n'ai vraiment pas de chance quand je pose (rarement) une question (0 réponse)
    Quoiqu'il en soit, j'ai modifié ma procédure en y ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     execute immediate 'alter SESSION SET EVENTS ''942 trace name errorstack level 3''';
    J'ai pu ainsi avoir un peu plus détails sur l'erreur en regardant les fichiers trace (.TRC) sur le serveur
    ksedmp: internal or fatal error
    ORA-00942: Table ou vue inexistante
    Current SQL statement for this session:
    select name, address, protocol, trans_name, subscriber_type from "PLUTON"."AQ$__S" where bitand(subscriber_type, 1)=1 and queue_name = :1
    Je ne sais pas d'ou sort ce nom de table généré par AQ (et qui contient la liste des 'subscribers' et qui devrait s'appeler dans mon cas AQ$_T_TASK_MSG_QUEUE_S.
    J'ai trappé temporairement l'erreur ORA-00942 pour voir si ca remarche. A suivre!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur connexion dans sqlPlus oracle 10g?
    Par ra'uf dans le forum Connexions aux bases de données
    Réponses: 5
    Dernier message: 26/05/2009, 17h39
  2. erreur VBA dans un recordset
    Par rapace dans le forum Access
    Réponses: 4
    Dernier message: 12/10/2005, 15h52
  3. ERREUR PRJ0019 dans visual -> ????
    Par cathar_rhythm dans le forum MFC
    Réponses: 1
    Dernier message: 07/06/2005, 14h00
  4. [C#] Message d'erreur vide dans une replication et rda
    Par Roach- dans le forum Windows Forms
    Réponses: 25
    Dernier message: 05/04/2005, 15h19
  5. erreur syntaxe dans requete
    Par dom - ien moutiers dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/04/2004, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo