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 :

Revenir en arrière après des update


Sujet :

Oracle

  1. #1
    En attente de confirmation mail
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Revenir en arrière après des update
    Bonjour,
    Sur une table assez grosse (4 Millions d'enrg) les utilisateurs peuvent transformer des sous-ensemble de données à l'aide d'Upate à demi controlés par le programme client et par des proc en PLSQL (Bien sur il y a un commit après chaque update, autrement je ne poserai pas la question).

    J'aimerai ajouter une fonctionnalité permettant aux utilisateurs de revenir en arrière (un peu comme Undo / Excel) après par exemple quelques manips (update) et suivant le résultat et la décision qu'ils prendraient suite à leurs premières modifs.

    Je ne vois pas de solutions simples sans écrire pas mal de PLSQL, mais peut-être qu'il y a une possibilité existante plus facile d'où ce message.

    La solution que je me propose est d'enregistrer à l'aide d'un trigger, les champs modifiés , avec une sorte de N° de modif et une proc pour remettre les modifications à la demande de l'utilisateur...
    Merci de vos suggestions.

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Points : 170
    Points
    170
    Par défaut
    En 9i et suivant il est possible d'utiliser l'undo segment pour allez voir une ancienne valeur d'une ligne modifiéee (select .. from .. as of .. ).
    Par contre la requête ce fait en fonction de la date ou du scn (il faudrait géré le moment de la transaction pour pouvoir récuperer les valeurs).
    Les données dans l'undo segment ont une durée de vie limitée en fonction de l'activité transactionnelle de la base de du réglage de l'undo segment.

    Sinon il faut gérer (via un trigger par example une table d'historique des modification pour pouvoir faire des retours arrières)

  3. #3
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Flashback semble plus approprié à ces besoins mais attention, pour fonctionner, flashback a besoin de journaliser (un peu comme les redo, mais dans le sens undo) et ces journaux sont TRES consommateurs de palce disque...

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075

  5. #5
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    C'est surtout les flashbacks (au pluriel car depuis la 10g, il y en a plusieurs : http://www.oracle.com/technology/dep...k_Overview.htm) car logminer ne te permettra pas de ramener toute ta table... tu pourras savoir qui, quand, comment, et quoi, mais le retour, tu le ferais à la main !

  6. #6
    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
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour ,

    effectuer un flachback complet et incomplet en 10G

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Super interressant ce flashback partiel....

    Par contre, j'ai l'impression que c'est orienté DBA, ça doit être chaud d'interfacer ce genre de commande pour en faire de véritables "undo" utilisateurs ne serais-ce que pour gérer les accès concurents. Car il me semble pas qu'on puisse annuler des modif anciennes tout en conservant des modifs récentes ?

    Dans la mesure ou on ne peux pas jouer avec les rollback, j'ai bien l'impression que la seule solution souple soit de développer sois meme son suivi de modifs...

  8. #8
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    ah non, si vous voulez faire vous-même votre propre retour en arrière, il n'y a guère que faire des commits/rollbacks à bon escient, c'est quand même étudié pour !!!!

  9. #9
    En attente de confirmation mail
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci à tous ceux qui m'ont répondu, je pense que je vais utiliser le systeme FLASHBACK.

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    de toutes façons, j'ai relu le problème et c'est pas du tout adapté au besoin... là c'est un problème fonctionnel il faut donc le traiter fonctionnellement, cad un COMMIT que quand l'utilisateur est sûr de son choix

  11. #11
    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
    Points : 3 597
    Points
    3 597
    Par défaut
    La notion de SAVEPOINT peut éventuellement être intéressante: elle permet de faire des rollback partiels dans une transaction càd d'annuler les mises à jour suivant un savepoint donné (sans annuler toute la transaction en cours). Mais il faut quand même que l'application code la définition du savepoint:

    et le rollback correspondant
    .

    Exemple complet: http://download-uk.oracle.com/docs/c...08sql.htm#2163

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

Discussions similaires

  1. [XL-2013] Revenir en arrière après un filtre en VBA.
    Par Matthio94 dans le forum Excel
    Réponses: 4
    Dernier message: 05/06/2014, 10h39
  2. Revenir en arrière après avoir "Publier" une application web
    Par Moana689 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 18/06/2013, 04h55
  3. Réponses: 19
    Dernier message: 07/09/2009, 21h21
  4. Revenir en arrière après un MsgBox
    Par drake56 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/06/2009, 15h15
  5. Revenir en arriere apres Update
    Par ledjlale dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 18/04/2008, 15h32

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