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

Oracle Discussion :

[Pl/Sql] DBMS_JOB et procédure


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut [Pl/Sql] DBMS_JOB et procédure
    Bonjour a tous,

    je rencontre un probleme avec DBMS_JOB d'oracle.

    J'ai créé des procédures stockées pl/sql. Lorsque je les lance directement, elles fonctionnent sans probleme.

    J'ai ensuite créé des "jobs" pour chacune d'entre elles genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DECLARE
    jobno number;
    begin
    dbms_job.submit(jobno,'proc_client_maj;',trunc(sysdate)+1+5/24,'trunc(sysdate)+1+5/24');
    commit;
    end;
    /

    Lorsque je regarde ma liste de jobs, il semble qu'ils aient été correctement lancés, à la date prévue, puisque le next_date passe à la date suivante. De plus, le champs failures reste à 0.

    Pourtant, le résultat de la procédure n'apparait pas dans la base.
    Le problème est identique si j'essaye de lancer le job manuellement avec dbms_job.run().

    Autrement dit, la procédure marche, sauf si elle est lancée par un "job"... et j'avoue ne pas comprendre comment c'est possible.

    Je précise également que mes autres jobs marchent, le probleme n'intervient que sur 3 procédures particulieres, qui calculent des stats. Ces procédures sont particulierement longues à s'exécuter (5 à 10 min). Pourtant je n'ai pas trouvé d'information concernant une éventuelle limite genre "timeout" pour les jobs...

    Avez-vous une idée de la source éventuelle d'un problème de ce genre ??

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Vérifiez qu'il y a bien un COMMIT dans la procédure lancée et vérifiez aussi que dans l'alert.log ne contient aucune erreur pour le job lancé.

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320

  4. #4
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    Il y a bien un COMMIT dans chaque procédure lancée par un job.

    Dans le fichier alert, il y a quelques lignes qui coincident avec l'heure planifiée :

    Thu Aug 03 05:20:30 2006
    Thread 1 advanced to log sequence 12393
    Current log# 3 seq# 12393 mem# 0: D:\ORADATA\GTI\REDO03.LOG
    Thread 1 advanced to log sequence 12394
    Current log# 1 seq# 12394 mem# 0: D:\ORADATA\GTI\REDO01.LOG
    Thread 1 advanced to log sequence 12395
    Current log# 4 seq# 12395 mem# 0: D:\ORADATA\GTI\LOG5ORCL.ORA
    Est-ce que ca peut permettre de mieux comprendre le probleme ?

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Non ca c'est juste les modications du REDO courant

    Peux t'on avoir le source

  6. #6
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    Jaouad, je me suis beaucoup servi de ce tuto qui est tres clair et qui m'a bien rendu service, d'ailleurs la plupart des jobs que j'ai créé marchent, mais j'ai un probleme particulier et je n'ai pas trouvé la réponse pour l'instant dans ce tutoriel

  7. #7
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    Voila la source d'une des procédures qui posent probleme :

    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
    create or replace procedure proc_pays_maj AS
      datemois CHAR(6);
      code Article.ARKTCODART%TYPE;
      codecomp Article.ARKTCOMART%TYPE;
      pays Client.CLCTCPAYS%TYPE;
      somme Integer;
     
      CURSOR C1 IS select TO_CHAR(TO_DATE(ECCJCRE,'yyyymmdd'),'mmyyyy'), 
      LCCTCODART, LCCTCOMART, ECCTCPAYS, SUM(LCCNQTEEXP)  
      from EEXPCLI,LEXPCLI
      where EEXPCLI.ECKTSOC=LEXPCLI.LCKTSOC 
      and EEXPCLI.ECKTNUMERO=LEXPCLI.LCKTNUMERO 
      and EEXPCLI.ECKTINDICE=LEXPCLI.LCKTPSF 
      and ECKTSOC='110' 
      and ECCJCRE>=to_char(sysdate,'yyyymm')-1 || '01'
      and ECCJCRE<=to_char(sysdate,'yyyymm')-1 || '31' 
      group by TO_CHAR(TO_DATE(ECCJCRE,'yyyymmdd'),'mmyyyy'),LCCTCODART, LCCTCOMART,ECCTCPAYS;
     
      BEGIN
        OPEN C1;
        LOOP
          FETCH C1 INTO datemois,code,codecomp,pays,somme;
            EXIT WHEN C1%NOTFOUND;
            INSERT INTO STATPAYS Values(datemois,code,codecomp,pays,somme);
        END LOOP;
      CLOSE C1;
      commit;
      end;
    /

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    tu es sous quelle version ??
    lorsque tu lance la procédure à la main je suppose que cela fonctionne correctement ??

    Tu as bien fait attention à tout ce qui était privilége ...

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

Discussions similaires

  1. Générer SQL dynam. dans proc. stocké
    Par edefius dans le forum SQL
    Réponses: 17
    Dernier message: 20/04/2009, 12h11
  2. [SQL 2000 Store Proc] Detecter date invalide dans le code
    Par WwiloO dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/05/2007, 15h09
  3. [T-SQL] Optimisation de proc
    Par Deedoo2000 dans le forum Adaptive Server Enterprise
    Réponses: 19
    Dernier message: 02/08/2006, 08h40
  4. [T-SQL] Optimisation de proc
    Par Deedoo2000 dans le forum Sybase
    Réponses: 19
    Dernier message: 02/08/2006, 08h40
  5. Réponses: 10
    Dernier message: 17/05/2006, 11h50

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