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 :

acces conccurent


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Par défaut acces conccurent
    Bonjour,
    je suis en train de me developper une application web en je22 ( jsp/servlet, tomcat,oracle,eclipse )
    mon petit souci est le suivant : je voudrais mettre en place un lock applicatif : plus precisement :

    User1 ---> se connecte et modifie "voitureA" ( mais pas encore de transactin ouverte et donc pas encore de commit )

    User2 ---> se connecte et modifie "voitureA"--> commit;

    User1---transaction puis commit sur la ressource "voitureA"

    je voudrais que oracle informe User1 que la voitureA a ete modifié depuis le temps..

    la solution serait peut etre d'utilisé un select for update; des lors ou il consult VoitureA mais User1 pourrait locker la ressource un bon moment.... pas possible

    Alors quelqu'un connaitrais un truc ?

  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
    Vous pouvez essayer d'utiliser SELECT FOR UPDATE NOWAIT: si quelqu'un a déjà verrouillé la ligne, Oracle retourne immédiatement une erreur ORA-00054 qui peut être traitée dans votre avec:
    - un message "voiture en cours d'utilisation "
    - ROLLBACK

    Notee qu'en général Oracle démarre une transaction implicitement dès la connection à la base ou à la première requête executée (dans ORACLE il n'y a de BEGIN TRANSACTION disponible pour le développeur).

  3. #3
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Par défaut merci
    merci pour l'info ..
    le souci dans ce cas c'est que si l'utilisateur 1 ne ferme pas sa session
    la voiture est locker ..... pour un moment
    effectivement l'utilisateur 2 est notifié du fait qu'il ne sert à rien de modifier la voiture car sa modification ne sera pas prise en compte...

  4. #4
    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
    Si on veut éviter ce problème, peut-être que l'application peut mettre en place un time-out côté client au bout d'un certain délai: si 'l'utilisateur est inactif depuis X minutes, le client pourrait faire annuler la transaction courante.

    On peut aussi créer un profil ORACLE du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE PROFILE plimit IDLE_TIME X;
    et assigner ce profil aux utilisateurs de l'application avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER USER toto PROFILE plimit;
    Les connections Oracle seront arrêtées au bout de X minutes d'inactivité.

    Il est aussi possible de détecter les sessions oracle inactives côté base de données en scrutant V$SESSION et en "tuant" les connections inactives depuis X minutes (nécessiterait une procédure PL/SQL qui devrait tourner régulièrement avec le droit d'exécuter ALTER SYSTEM KILL SESSION ...).[[

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2008, 07h49
  2. PB Accès conccurents
    Par ydelanoe dans le forum SQL
    Réponses: 8
    Dernier message: 23/10/2007, 15h43
  3. [Windows]accès base de registre windows
    Par Greg01 dans le forum API standards et tierces
    Réponses: 27
    Dernier message: 05/06/2007, 15h14
  4. Exécution indivisible (accès conccurent)
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 23/07/2002, 08h09
  5. Accès à une application ouverte (OLE Automation ?)
    Par PascalB dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2002, 14h39

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