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 :

[Oracle 9i] DMBS_JOBS Appeler une procédure


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Par défaut [Oracle 9i] DMBS_JOBS Appeler une procédure
    Bonjour,

    je souhaite tester dbms_jobs d'Oracle. Pour cela je créée une table kikoulol, une fonction kiki. Je veux appeler ma procèdure toutes secondes pour qu'elle incrémente un champ de la table kikoulol. Malheuresement ca ne marche pas.

    La table kikoulol :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE kikoulol(
      id NUMBER(10),
      val NUMBER(10)
    );
     
    Table créée.
     
    INSERT INTO kikoulol VALUES (1, 0);
     
    1 ligne créée.
    Ma procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE PROCEDURE kiki IS
    BEGIN
      UPDATE kikoulol SET val = val + 1 where id = 1;
    END;
     
    Procédure créée.
    Et enfin la création de mon job [je pense merder au niveau de l'interval, je n'ai pas trop compris comment faire]:

    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
    BEGIN
      dbms_job.isubmit('11', 'kiki();',sysdate, 'SYSDATE + 1/86400');
    END;
     
    Procédure PL/SQL terminée avec succès.
     
    select job , what from  user_jobs;
     
           JOB
    ----------
    WHAT
     
            11
    kiki();
     
    show parameter job_queue_processes ;
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- 
    job_queue_processes            integer     5

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    En effet, Le submit ne "commit" pas ..

    Essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    declare
       l_job number;
    begin
    dbms_job.isubmit('11', 'kiki();',sysdate, 'SYSDATE + 1/86400');
    commit;
    end;
    /

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Petit complément, étant donné que tu veux executer ton job toutes les secondes :

    Sous SYS lance la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select a.ksppinm parameter,b.ksppstvl value from x$ksppi a,x$ksppcv b
    Where a.indx=b.indx and ksppinm like '%job%'
    Imaginons ==> job_queue_interval = 5 (valuer par défaut je crois) , les jobs de la file d'attente ne seront déclenchés que toutes les 5 secondes .....
    En gros, ton job sensé se lancer toutes les secondes ne sera lancé que toutes les 5 secondes ....

    job_queue_processes = 5 ==> pas plus de 5 jobs executés en même temps ....

  4. #4
    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
    sauf que job_queue_interval disparait avec la 9i

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Effectivement , je travaille plus sur des 8i que sur des versions 9 ou 10, par contre le paramètre job_queue_interval exite toujours sur des bases 9 ==> il est caché ... _job_queue_interval, s'il existe encore, c'est que l'on peut encore le positionner ...
    Quoi qu'il en soit, je ne pense pas que ce soit très "judicieux" d'executer un job toutes les secondes sachant que le job risque de prendre plus d'une seconde lors de son execution ...

  6. #6
    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
    Tout à fait , cependant nous déconseillons la mise en place de paramétre caché sans l'accord du support .

    Mais je suis tout à fait d'accord avec toi lorsque tu dit que programmer des jobs toutes les secondes n'est pas trés judicieux.

    PS : par défault le job_queue_interval est à 5 secondes.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2011, 09h34
  2. appeler une procédure oracle
    Par mlaiti dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 20/02/2008, 16h26
  3. Comment appeler une procédure ?
    Par darkmalak01 dans le forum Débuter
    Réponses: 2
    Dernier message: 03/10/2005, 19h05
  4. comment appeler une procédure événementielle
    Par OutOfRange dans le forum Débuter
    Réponses: 8
    Dernier message: 03/06/2005, 19h32
  5. [appeler une procédure stockée]
    Par viny dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 10/03/2005, 22h38

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