Bonjour,
Est ce que je peux revenir en arrière pour les enregistrements d'une table , je veux récupérer les données d'hier ou d'avant une heure.
Est ce que c'est possible?
Merci
Version imprimable
Bonjour,
Est ce que je peux revenir en arrière pour les enregistrements d'une table , je veux récupérer les données d'hier ou d'avant une heure.
Est ce que c'est possible?
Merci
Bonjour,
C'est eventuellement possible par exemple avec MySQL, si tu as les logs binaires activés. ainsi qu'un dump quotidien.
Commence par faire un dump pour être sur de ne rien perdre.
Ensuite, il te "suffira" de :
- Récupérer dans un fichier la totalité de tes logs binaires a partir du dump
- De virer toutes les requêtes que tu ne veux pas voir exécuter.
- Réintégrer un dump de la veille
- Faire passer tes logs binaires filtrés par tes soins pour qu'ils restituent tout ce qui a été faire depuis le dump de la veille a l'exceptions des requêtes que tu as préalablement enlevées.
Bien sur, il est évidemment conseillé de ne pas faire ceci en production, d'être très rigoureux sur le contenu du fichier que tu vas réintegrer apres ton dump.
Et bien sur cela peut être très fastidieux si tu as eu des millions de requêtes depuis ton dernier dump.
Ca peut etre long, mais avec quelques scripts bien ficelés, tu devrait t'en tirer sans trop de problèmes.
Alors attention, cette solution peut-être un peu bourrine, si quelqu'un en connait une meilleure, c'est toujours bon a prendre.
Cordialement.
Désolé, mais j'avais pas vu que le message faisait parti du forum Oracle..
:fessee:
Ce post peut etre ? http://www.developpez.net/forums/d21...-apres-update/
Si je n'ai pas créé de mouvement de ligne , je ne peux pas faire de flashback.
Est ce que c'est vrai?
J'ai pas activé mouvement de ligne donc comment je peux récupérer les données d'une date ?
Bonjour,
Pas beaucoup de possibilité dans ce cas précis.
Je ne voit personnellement que deux hypothèses : Le flashback database (si activé) ou rejouer les archiveslog jusqu'a la date et heure qui te convienne. Mais les inconvénients sont majeurs puisque cela implique de l'indisponibilité et que cela concernera l'intégralité de ta base de données, et donc potentiellement d'autres objets / tables
A tout hasard, si ton tablespace possède l'option RETENTION_GUARANTEE, essaie de récupérer le n° de SCN lié à la date et heure qui t'interesse , et tente
ou encore via le timestampCode:flashback table mytable to scn XXXXX ;
Par contre il te faut le privilege FLASHBACK TABLE ou FLASHBACK ANY TABLE si tu le fait depuis un user autre que system ou sys.Code:flashback table mytable TO_TIMESTAMP ('29/01/2011 12:00:00','DD/MM/YYYY HH24:MI:SS')
Réponse : L'activation du mouvement des lignes peut se faire à tout moment.
1) Il faut bien voir que l'historisation des anciennes valeurs est assurée automatiquement par le tablespace d'annulation, mais pendant une durée assez brève et un peu aléatoire.
Pour paramétrer la durée de rétention souhaitée (sans garantie) :
Pour être sûr que la rétention demandée sera réellement assurée :Code:alter system set undo_retention=nombre_de_secondes;
2) L'activation du mouvement de lignes pour une table n'a aucune influence sur la conservation des anciennes valeurs, et n'effectue aucun retour en arrière.Code:alter tablespace mon_tbs_undo RETENTION GUARANTEE;
Il a juste pour effet d'autoriser que les lignes de données changent d'adresse, ce qui n'est pas permis par défaut.
est exigé uniquement parce que le FLASHBACK TABLE va faire des DELETE suivis par des INSERT, ce qui va provoquer le changement d'adresse des données.Code:alter table ma_table ENABLE ROW MOVEMENT;