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 :

Créer un job oracle sans l'exécuter


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Par défaut Créer un job oracle sans l'exécuter
    Bonjour,

    J'utilise oracle 9i et j'ai créé un job oracle qui lance une procédure.

    Mon pb c'est que celui-ci s'exécute au moment de sa création.

    Je souhaite donc le créer en "OFFLINE" !!

    Attention je ne veux pas le créer puis ensuite le placer OFFLINE cra il se sera exécuter au moins une fois et il ne faut surtout pas.

    Pouvez-vous m'aider svp ??

    voici le code :

    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
     
    declare
     
            w_job_count                  number:=null;
            w_job_main                   number:=null;
            w_job_purge                  number:=null;
            w_max                        number:=0;
     
    begin
     
            -- JOB DESTRUCTION IF EXISTS
            select count(*) into w_job_count
            from dba_jobs
            where what like '%PROCEDURE_TOTO%';
            if w_job_count = 0 then
                 null;
            else
                  select job into w_job_main
                  from dba_jobs
                  where what like '%PROCEDURE_TOTO%';
                  dbms_job.remove(w_job_main);
            end if;
     
            DBMS_JOB.SUBMIT(JOB=>w_job_main,
                     WHAT=>'PROCEDURE_TOTO(''/tmp'',''toto.txt'');',
                     NEXT_DATE=>SYSDATE,
                     INTERVAL=>'TRUNC(LEAST(NEXT_DAY(SYSDATE,''MONDAY''),NEXT_DAY(SYSDATE,''TUESDAY''),NEXT_DAY(SYSDATE,''WEDNESDAY''),NEXT_DAY(SYSDATE,''THURSDAY''),NEXT_DAY(S
    YSDATE,''FRIDAY'') )) + 4/24');
            commit;
     
    end;
    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Par défaut comment créer un job sans l'exécuter
    Bjr,

    je cherche tjrs un moyen de créer un job en mode "offline" ou "broken" de sorte qu'il soit créé et que je n'ai plus qu'à l'exécuter manuellement la première fois, puis qu'il s'exécute automatiquement les autres fois.

    est-on obligé de faire un DBMS_JOB.SUBMIT pour le créer ? car j'ai l'impression que le "SUBMIT" le lance automatiquement !!

    merci de votre aide,

    Cat

  3. #3
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    J'utiliserais null pour next_date:
    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
    variable xjob number
     
    begin
      DBMS_JOB.SUBMIT(
        JOB=>:xjob,
        WHAT=>'null;',
        NEXT_DATE=>null,
        INTERVAL=>'sysdate + 1');
      commit;
    end;
    /
     
    select to_char (last_date, 'dd.mm.yyyy HH24:MI') last, to_char (next_date, 'dd.mm.yyyy HH24:MI') next
      from dba_jobs
      where job = :xjob;
     
    LAST             NEXT
    ---------------- ----------------
                     01.01.4000 00:00
    Lancer maintenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    exec dbms_job.change (:xjob, null, sysdate, null)
    commit;
     
    select to_char (last_date, 'dd.mm.yyyy HH24:MI') last, to_char (next_date, 'dd.mm.yyyy HH24:MI') next
      from dba_jobs
      where job = :xjob;
     
    LAST             NEXT
    ---------------- ----------------
    13.10.2008 20:03 14.10.2008 20:03

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Par défaut
    c'est bon j'ai trouvé toute seule.

    Il suffit de ne pas mettre sysdate mais "sysdate +1" par exple :

    et puis avant le commit de faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbms_job.BROKEN(w_job_main, TRUE);

    @+

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Par défaut
    lol. merci de ta réponse DAB j'avais pas vu ;-)

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

Discussions similaires

  1. Problème d'exécution d'un job Oracle
    Par KuBi4K dans le forum SQL
    Réponses: 3
    Dernier message: 01/06/2007, 09h47
  2. Connection a Oracle sans client
    Par schiper dans le forum MFC
    Réponses: 2
    Dernier message: 02/08/2005, 10h57
  3. problème avec job oracle
    Par cyberyan dans le forum Oracle
    Réponses: 3
    Dernier message: 29/03/2005, 18h16
  4. Créer une BDD Oracle sur windows
    Par calimero82 dans le forum Administration
    Réponses: 7
    Dernier message: 25/10/2004, 15h30
  5. Créer une fonction mathématique pendant l'exécution
    Par zeprogrameur dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2004, 11h36

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