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 :

Thread et lock de tables


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Par défaut Thread et lock de tables
    Bonjour,

    J'ai crée un thread qui fait un select sur plusieurs tables Oracle.
    Au moment ou ce thread tourne, je veux
    - laisser l'accès en lecture à ces tables (via une appli web)
    - bloquer l'accès en écriture sur ces tables (toujours via l'appli web)

    Au jour d'aujourd'hui je ne sais pas comment tout ca se comporte, alors je voudrais tester.
    J'ai donc pensé à créer une transaction qui ferait une update dans une table, et de ne pas committer avant la fin du thread pour voir ce qui se passe..
    Le problème, c'est que je ne sais pas écrire une transaction (tout bete) dans dvisualiser (en Oracle).

    Mon objectif est de pouvoir signaler à un utilisateur de l'appli web que sa mise à jour n'a pas été faite, le thread étant prioritaire.

    Quelqu'un peut il m'aider ?

    Merci beaucoup !

    Flo

  2. #2
    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
    Un select for update permet de mettre en place un lock de maniére exclusive sur la table. C'est ainsi qu'oracle va gérer les accées concurents et ceux jusqu'au commit ou rollback . Concernant la lecture celle ci est toujours autorisé durant ton lock . Si nécessaire elle se servira de l'image avant

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Par défaut
    Merci Jouad de ta réponse.

    Par contre, je ne sais pas quoi faire de ce "select for update"
    Je dois remplacer le "SELECT" sur les tables que je veux verrouiller par ce "select for update" ? Meme si je ne fais pas de mise à jour sur ces tables apres ?..

    Comment je peux tester en manuel ce que donne le conflit ?... :s

    Merco

  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
    Je vous conseille de lire attentivement le section How Oracle locks data (http://download-west.oracle.com/docs...cnsis.htm#2841) du Oracle9i Database Concepts et vous avez des exemples détaillés ici http://download-west.oracle.com/docs...cnsis.htm#3330
    avec LOCK TABLE et SELECT FOR UPDATE.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Par défaut
    merci bcp !

    J'ai compris le principe général des lock, mais comme ca pour tester depuis ToadFree ou autre logiciel, je bug

    Je ne sais pas écrire une transaction pour utiliser ces locks et j'ai beau chercher aucun site ne propose d'exemple...

  6. #6
    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
    Avec Oracle, une transaction: c'est une suite de commandes SQL qui se termine par COMMIT ou ROLLBACK. Il n'y a pas de BEGIN TRANSACTION comme dans d'autre systèmes: Oracle démarre implicitement une transaction à la première commande SQL qui suit un COMMIT ou ROLLBACK (ou à la première commande SQL qui suit le démarrage d'une connexion).

    Ce lien http://download-west.oracle.com/docs...cnsis.htm#3330
    vous donne des exemples avec des transactions qui se terminent avec ROLLBACK au début puis par COMMIT à la fin.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/01/2010, 15h15
  2. [Multi-thread] Comment lock l'acces a un containeur de la STL ?
    Par Izidor's dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 14/10/2009, 12h09
  3. Thread et lock pour écrire dans un fichier?
    Par DarkHerumor dans le forum C#
    Réponses: 3
    Dernier message: 31/03/2009, 09h40
  4. Lock de table et SQL Management studio
    Par The eye dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 21/08/2007, 17h30
  5. Réponses: 8
    Dernier message: 06/09/2006, 17h36

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