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

XMLRAD Discussion :

database.ForceCommit et Oracle


Sujet :

XMLRAD

  1. #1
    Membre éclairé Avatar de Jeweller
    Inscrit en
    Août 2003
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 357
    Par défaut database.ForceCommit et Oracle
    Hello!

    XMLRAD2006, Delphi et base de données Oracle. J'utilise dans mon code un TDacDatabase.ForceCommit (et cela pour diverses raisons).
    Je viens de remarque que (apparament???) pour de oracle 8 ou 9 (et pas en 10, la ca marche) apres cette instruction, plus aucune données n'est inserée, ou modifiée dans la base de données par l'application. Comme si le fait de faire un forceCommit engendrait le fait que plus aucune transaction ne soit possible sur la base ?
    Avez vous des infos à ce sujet ?

    Michael

  2. #2
    Membre éclairé Avatar de Jeweller
    Inscrit en
    Août 2003
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 357
    Par défaut
    Et je ne comprends d'autant moins que le forcecommit est un "commit" classique d'un point de vue BDD (l'ado connection fait le commit meme si plusieurs transactions sont cascadées)....
    J'ai ce phénomène sur 2 postes (chez moi et chez le client!) avec un client Oracle 9, aucune modif n'est appliquée sur la base meme celle faite durant la transaction du force commit. Et si je change simplement Forcecommit en commit ca marche normalement??

    Le soucis c'est que je ne peux pas laisser le commit simple, car sous MSSQL, j'ai un deadlock du à une autre transcation en parallèle... Oracle s'en fiche et ne vérouille pas, MSSQL si. C'est pour cela que j'ai forcé le commit. Je vais qd meme pas tester si je suis en Oracle ou MSSQL et faire Commit ou ForceCommit selon!

    Bref, je suis perplexe... il y a surement autrechose, mais je ne vois pas quoi! Le RefCountTransaction qui se passe mal, mais pkoi que dans ce cas ?... Je vois pas de lien .... Un beginTrans qui ne serait plus jamais effectuée ??

  3. #3
    Membre éclairé Avatar de Jeweller
    Inscrit en
    Août 2003
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 357
    Par défaut
    Desole mm si ca n'inspire personne je reviens avec ca, mais ca m'inquiete vraiment!

    Apres etre passé par le ForceCommit, plus aucune modification n'est possible sur l'ensemble de ma base de données!! Et en plus de ca, sur toutes les lignes sur lesquels j'essai de faire une modif, il y reste un verrou ou qqch qui bloque toute les autres appli qui tenterai de modifier plus tard la meme ligne.... il ne me reste plus qu'a faire un iisreset....
    Je comprends vraiment pas surtout que sur mon poste ca fonctionne nikel avec le forcecommit et cela sur la meme base. Les seules différences visibles sont la version du client Oracle (10 chez moi et 9 sur le serveur) et windows (XP chez moi et 2003 sur le serveur)...

  4. #4
    Membre éclairé Avatar de Jeweller
    Inscrit en
    Août 2003
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 357
    Par défaut
    C'est la dernière, c'est promis.... les prochaines c'est pour une réponse!

    Je m'en sors finalement en retirant un DataBase.StartTranscation un peu plus haut dans mon code.... ne me demandez pas pkoi il est la celui-la. Du coup le "ForceCommit" devient un "commit" normal et mon code fonctionne sous Oracle et sous MSSQL. Cool... mais bizard qd meme:

    Ca le fait pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DataBase.StartTransation;
    try
       ...
      DataBase.ForceCommit;
    except
      ...
    end;
    Ca le fait à moitié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DataBase.StartTransation;
    try
       ...
      DataBase.Commit;
    except
      ...
    end;
    Ca le fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //DataBase.StartTransation;
    try
       ...
      DataBase.ForceCommit;
    except
      ...
    end;
    Michael

  5. #5
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    en général après un ForceCommit on fait un StartTransaction pour la suite du code sinon effectivement t'as des trucs bizarres.
    le force commit c'est pour forcer le commit d'une transaction alors que tu es déjà a plusieurs niveaux d'imbrication des starttransactions. mais il faut redémarrer une transaction pour que le dépilement des commit se fasse correctement.

Discussions similaires

  1. Utilisation de database link avec Oracle 9i+
    Par moezsokrati dans le forum Oracle
    Réponses: 1
    Dernier message: 21/01/2006, 17h45
  2. Réponses: 4
    Dernier message: 25/08/2005, 17h16
  3. création database "oracle 10" sous "solaris 1
    Par elghayam dans le forum Oracle
    Réponses: 3
    Dernier message: 26/07/2005, 07h53
  4. forms9i; oracle database 9i;
    Par freba dans le forum Forms
    Réponses: 1
    Dernier message: 29/06/2005, 22h57

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