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 :

rollbacks et transactions distribuées


Sujet :

Oracle

  1. #1
    Membre actif

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 87
    Points : 281
    Points
    281
    Par défaut rollbacks et transactions distribuées
    bonjour,

    je travaille dans le cadre de transactions distribuées.
    j'obtiens des messages d'erreur m'indiquant qu'il m'est impossible d'effectuer des rollback dans ce cadre. Comment puis-je donc faire des roll, ou trouver une solution alternative ?

    merci d'avance pour vos réponses.

  2. #2
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Peux tu donner un exemple de plantage merci !

  3. #3
    Membre actif

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 87
    Points : 281
    Points
    281
    Par défaut
    disons que c'est dans un contexte où ma proc est appelée par une machine tierce.
    Des traces sont écrites sur une table, et en cas de pb au cours de la proc, il faut "rollbacker" ces traces pour ne plus retrouver.
    c'est aussi simple que cela.

  4. #4
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Donc ta procédure est automone sur la base elle insert des lignes et si plantage elle rollback ?


    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    begin
    insert into trace .....
    exception
      when others then
      rollback;
      raise_application_error(-20001,sqlerrm);
    end;
    Je vois pas trop le truc en fait désolé !

  5. #5
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Citation Envoyé par GMI3
    Comment puis-je donc faire des roll, ou trouver une solution alternative ?
    1. il faut donner les versions Oracles des deux bases
    2. l'erreur en complet
    3. si possible le code de la requête

  6. #6
    Membre actif

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 87
    Points : 281
    Points
    281
    Par défaut
    en réalité je ne travaille que sur une seule base en 8.17, ce qui me semble vraiment bizarre.
    L'erreur est quant à elle tout simple : "Package crash user@base ODP.NET ORA-02074: cannot set savepoint in a distributed transaction"

  7. #7
    Membre actif

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 87
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par sygale
    Donc ta procédure est automone sur la base elle insert des lignes et si plantage elle rollback ?


    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    begin
    insert into trace .....
    exception
      when others then
      rollback;
      raise_application_error(-20001,sqlerrm);
    end;
    Je vois pas trop le truc en fait désolé !
    oui c'est tout à fait ça.

  8. #8
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Ca peut être un BUG.
    Soit tu patch la version 8.1.7 en version plus recente.
    ou
    tu initialise l'attribut string de connection Enlist=False dans ODP.NET

  9. #9
    Membre actif

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 87
    Points : 281
    Points
    281
    Par défaut
    je viens de trouver une solution. Il suffit d'utiliser OracleOLEDB plutot que OracleODP. ça a l'air de bien fonctionner.
    Effectivement bouyao, cela doit être spécifique à la version 8.17 d'oracle qui ne gère pas bien les transactions distri.

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

Discussions similaires

  1. Probleme transaction distribuée
    Par funboard dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/01/2008, 09h37
  2. Conversion du type DATETIME lors d'une transaction distribuée
    Par Erwan1978 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/01/2008, 11h06
  3. transaction distribuée et transaction autonome
    Par eabitbol33 dans le forum SQL
    Réponses: 5
    Dernier message: 22/08/2007, 17h14
  4. Transactions distribuées et triggers
    Par mikedavem dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 15/04/2007, 20h00
  5. [Transaction Distribuées]Transaction et serveurs liés
    Par zaoueche dans le forum InterBase
    Réponses: 1
    Dernier message: 13/03/2007, 22h15

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