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

PL/SQL Oracle Discussion :

Recompiler un programme pendant son exécution


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 32
    Points
    32
    Par défaut Recompiler un programme pendant son exécution
    bonjour,
    Je voulais savoir comment réagi Oracle si on recompile un programme (procédure stockée, trigger ou autre ) pendant l'exécution de ce dernier?
    est ce que ça invalide le programme? ça l'arrête?

    MErci d'avance pour vos réponses.

    Djam

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Il t'envoie promener en te disant qu'il est en cours d'utilisation. Au pire, ta compilation plante (sans réponse), mais l'exécution continuera.

  3. #3
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par GoLDoZ Voir le message
    Il t'envoie promener en te disant qu'il est en cours d'utilisation. Au pire, ta compilation plante (sans réponse), mais l'exécution continuera.
    Bonjour,

    eh bien Non , ni l'un ni l'autre , il attendra ... que la procedure se termine et apres la compilation se lance .

    Tu Peux t'amuser avec

    Code sql : 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
    55
    56
    create OR REPLACE PROCEDURE PROC_1 
      as
      BEGIN
     
      dbms_output.put_line ('PROC_NAME : PROC1 ');
      end;
     
     
        create OR REPLACE PROCEDURE PROC_2
      as
      BEGIN
     
      dbms_output.put_line ('PROC_NAME : PROC2 ');
     
     
             FOR i IN 1..6 LOOP
                  IF MOD(i,2) = 0 THEN
                       DBMS_OUTPUT.PUT_LINE('Loop PROC_2 is ' || i);
                  END IF;
             END LOOP;
     
     
      end;
     
     
       create OR REPLACE PROCEDURE PROC_A 
      as
      BEGIN
     
      dbms_output.put_line ('PROC_NAME : PROCA ');
      PROC_1;
      dbms_lock.sleep (20);
      PROC_2;
      end;
     
     
      CREATE OR REPLACE PROCEDURE PROC_3
      as
     begin
     
    for i in REVERSE 1..20 loop
     
    dbms_output.put_line('LOOP PROC_3 :'||i);
    end loop;
    end;
     
     
      create OR REPLACE PROCEDURE PROC_A 
      as
      BEGIN
     
      dbms_output.put_line ('PROC_NAME : PROCA ');
      PROC_3;
      dbms_lock.sleep (20);
      PROC_2;
      end;


    dans une session tu lances

    dans une autre tu lances
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter procedure proc_A compile;

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Points : 394
    Points
    394
    Par défaut
    Je ne suis pas sûr qu'il va t'envoyer te promener (surtout pas par un temps pareil ).
    Je dirais plutôt que l'ordre de compilation va attendre la fin de l'exécution pour acquérir le verrou adéquat et se terminer normalement.

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Il me semblait qu'il lockait le package et du coup, renvoyait une réponse.
    Par contre, si la compilation se fait avec un logiciel genre toad, celui-ci ne rendra pas la main (ce que j'entendais par "plante") vu qu'il attendra la fin de l'exécution.

    D'une manière générale, il vaut mieux éviter ce petit jeu.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Points : 394
    Points
    394
    Par défaut
    D'une manière générale, il vaut mieux éviter ce petit jeu.
    Je ne vois pas pourquoi il faudra éviter cela.
    La mise en commun des ressources et la gestion des accès concurrents à ces ressources sont des fonctionnalités importantes que nous proposent les SGBD, alors pourquoi s'en priver !!!!

    Rachid

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Quand je modifie un package, je préfère être sûr que personne ne l'utilise. Sinon celui qui l'utilise pourrait avoir des surprises. Pour moi, c'est une sécurité évidente...
    (même si ce cas de figure ne se présente normalement que sur des bases de dev/test)

  8. #8
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Citation Envoyé par GoLDoZ Voir le message
    Quand je modifie un package, je préfère être sûr que personne ne l'utilise. Sinon celui qui l'utilise pourrait avoir des surprises. Pour moi, c'est une sécurité évidente...
    (même si ce cas de figure ne se présente normalement que sur des bases de dev/test)
    Tu as bien vu qu'il attend que la transaction qui veut modifier la procedure attend celle qui l'utilise finisse son travail avent de faire quoi que ce soit ...

    Donc si t'est en 7/7 24/24 h tu ne feras aucun mise a jour sur un site Internet accedé en permanence ???

    Oracle n'est pas Myql ni Ms Excel ni Ms Access ???

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Citation Envoyé par fatsora Voir le message
    Tu as bien vu qu'il attend que la transaction qui veut modifier la procedure attend celle qui l'utilise finisse son travail avent de faire quoi que ce soit ...
    Dans ce cas précis, on sait qu'une transaction est en cours sur ce package.
    Si on le compile sans savoir et qu'une transaction (exécution) a lieu après la compilation, celui qui l'utilise peut avoir un résultat autre que celui qu'il attendait car non informé de la modification.

    Citation Envoyé par fatsora Voir le message
    Donc si t'est en 7/7 24/24 h tu ne feras aucun mise a jour sur un site Internet accedé en permanence ???
    Effectivement c'est bien utile dans ce cas.
    Ma vision est un peu restreinte à des applis autre qu'Internet, où les mises en production ont lieu en dehors de toute activité.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Merci pour vos réponse :-)

    bonne journée
    Djam

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/08/2010, 23h40
  2. Réponses: 33
    Dernier message: 28/04/2010, 04h44
  3. Masquer la console pendant l'exécution du programme
    Par freezerhm dans le forum Pascal
    Réponses: 10
    Dernier message: 18/03/2007, 11h30
  4. Réponses: 2
    Dernier message: 13/11/2006, 19h03
  5. Empêcher la copie d'un prog pendant son exécution
    Par JuanLopez1966 dans le forum Assembleur
    Réponses: 3
    Dernier message: 09/09/2004, 19h49

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