Académique Documents
Professionnel Documents
Culture Documents
données Oracle
FLASHBACK
• Flashback est apparue avec Oracle Database 9i,
• Avec Oracle Database 10g et Oracle Database 11g, de nouvelles
notions de Flashback ont été ajoutées.
Le problème, c’est que cette notion de Flashback englobe beaucoup
de technologies qui souvent n’ont rien à voir les unes avec les autres.
D’abord qu’est ce que le l’architecture FlashBack ? C’est la
possibilité de faire des « Flashback », donc de faire des « retours
arrière » dans le temps, soit en faisant une récupération de données,
soit en voulant juste visualiser les données de ce moment la.
La famille flashback
• Il y a 8 types de Flashback !!!
1. Pour récupérer une table qui a été supprimée « accidentellement » : c’est
le Flashback Drop qu’il faudra utiliser.
2. Pour connaitre la valeur d’une ligne d’une table à une date donnée antérieure : c’est
le Flashback Query qu’il faudra utiliser.
3. Le Flashback Data Archive peut également répondre au besoin précédent.
4. Pour connaitre l’évolution de la valeur d’une ligne d’une table pour un intervalle de
dates donné : c’est le Flashback Versions Query qu’il faudra utiliser.
5. Mieux, si grâce a Flashback Query, vous avez localisé la date exacte et que vous
voulez revenir à la version de la table de cette date la, vous devrez
utiliser Flashback Table.
La famille flashback
6. Pour connaitre pour une transaction donnée, l’ordre ou les ordres qui
permettraient d’annuler cette transaction, c’est le Flashback Transaction
Query qu’il faudra utiliser.
7. Pour appliquer les ordres SQL de manière à annuler cette transaction, c’est
le Flashback Transaction Backout qu’il faudra utiliser.
8. Enfin si vous voulez rétablir toute la base de données jusqu’à un point antérieur
dans le temps en annulant toutes les modifications apportées depuis ce point,
C’est le Flashback Database qu’il faudra utiliser.
• Deux cas :
• le Flashback ne fait que lire des données,
• il fait de la modification de données.
Ou Flashback va chercher les données ?
• Les différents Flashback n’utilisent pas les mêmes zones pour
récupérer les données.
• Flashback Database utilise les journaux Flashback pour procéder à un
flashback de la base de données.
• Flashback Drop utilise la notion de « corbeille ».
• Flashback Data Archive utilise la notion d’archive Flashback.
• Flashback Table, Flashback Version Query, Flashback Query, Flashback
Transaction Query utilisent les données d’annulation (undo).
• Flashback Transaction Backout utilise les undo et les archivelogs.
Historique des Flashback
• TIMESTAMP : champ comme date + les fractions de secondes, fondé sur la valeur d
horloge du SE
• La fonction SYSTIMESTAMP :
• Retourne la date, heure, mns , secondes, fractions de secondes courantes.
Fonction sur date
• La fonction TO_TIMESTAMP :
• Convertit une chaine de caractères avec un certain format en une valeur de
type date.
• TO_TIMESTAMP(chaine, format)
• Chaine : string
• Format : pour afficher la date numérique.
Quelques options des formats pour les types dates
08/03/2024 11:03:26
SELECT ….
FROM nom_table
[AS OF {SCN|TIMESTAMP} valeur
SCN (System Change Number)
• Chaque transaction qui a fait commit, rend un nouvel état du système . Cet état est
identifié par un numéro : le SCN.
SELECT
DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER
FROM DUAL ;
GET_SYSTEM_CHANGE_NUMBER
----------------------------------------------
1965481
Fonctions de conversion SCN date et heure
SCN_TO_TIMESTAMP :
• Permet de convertir le numéro SCN en une valeur de type
TIMESTAMP.
• Exemple :
SELECT SCN_TO_TIMESTAMP( 1965481 )
From DUAL ;
SCN_TO_TIMESTAMP( 1965481)
----------------------------
26/02/09 13:29:10
Fonctions de conversion date et heure SCN
TIMESTAMP_TO_SCN :
• Exemple :
TIMESTAMP_TO_SCN(SYSTIMESTAMP)
----------------------------
1969239
Mettre en œuvre le Flashback
• Les étapes
• Ouverture du mode flashback :
• EXECUTE
DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(n1);
n1 est un SCN
• Interrogation de données dans leur version au SCN de valeur n1
EXECUTE DBMS_FLASHBACK.DISABLE;
Interrogation directe avec flashback…
• Interrogation de la table employe au 26 /04/2002
SELECT nom, prenom, fonction
from employe
AS OF TIMESTAMP TO_TIMESTAMP(‘26/04/2002’,’DD/MM/YYYY’)
TIMESTAMP_TO_SCN(26/04/2002)
----------------------------
1969239
INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
VALUES (7839, 'KING', 'PRESIDENT', NULL, to_date('17-11-1981', 'dd-mm-
yyyy'), 5000, NULL, 10);
COMMIT;
SAL
-----
5000
Dans cet exemple, on peut voir la valeur de l’employé KING une date antérieure précisée
Ici à 11h00 le 1er janvier 2011.
FLASHBACK QUERY
• Autre façon en utilisant le package DBMS_FLASHBACK.
• Cet ordre nous permet de voir la valeur des données de la base il y a N minutes
EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(sysdate- (3/1440));
PL/SQL procedure successfully completed
OBJECT_NAME ORIGINAL_NAME
------------------------------ -------------
BIN$HGnc55/7rRPgQPeM/qQoRw==$0 EMP
Récupération de la table par un flashback drop.
Attention :
Si la table avait des indexes ou des contraintes , ils vont être renommés en BIN$…
Après le flashback drop , ils conserveront ce nom en BIN$.
FLASHBACK VERSION QUERY
• Permet de consulter les versions d’une ligne qui existent entre deux
points dans le temps ou deux SCN (System Change Number).
• Valeur: indique
• le SCN sil argument SCN est choisi
• Une Valeur de type << TIMESTAMP>>
• MINVALUE : indique:
• La valeur minimale du SCN pour afficher les versions
• MAXVALUE : indique