
FLASHBACK DATABASE Oracle : restaurer une base à un instant passé
La commande FLASHBACK DATABASE est l’une des fonctionnalités les plus puissantes d’Oracle pour la récupération rapide de données. Elle permet de ramener une base de données entière à un état antérieur, sans restauration complète depuis les sauvegardes. Utilisée par les DBA en entreprise, FLASHBACK DATABASE réduit considérablement les temps d’arrêt lors d’erreurs humaines ou de corruptions logiques.
Définition et utilisation de FLASHBACK DATABASE
FLASHBACK DATABASE est une commande Oracle qui permet de rembobiner l’intégralité d’une base de données vers un point dans le temps passé, un numéro SCN (System Change Number) ou un restore point nommé. Contrairement à une restauration RMAN classique, cette opération n’implique pas de copie complète des fichiers de données : Oracle utilise les Flashback Logs stockés dans la Fast Recovery Area (FRA) pour reconstruire les blocs modifiés.
Cas d’usage en entreprise
- Annulation d’une migration ratée : un script de migration applicative a corrompu des données en production — FLASHBACK DATABASE permet de revenir à l’état d’avant en quelques minutes.
- Tests et recettes : remettre une base de test dans un état propre après une série de tests destructifs.
- Erreur DBA : un
TRUNCATEou unDROPaccidentel sur une table critique peut être annulé au niveau de toute la base. - Environnements de développement : revenir à un restore point entre deux cycles de développement.
Prérequis indispensables
- La base doit être en mode ARCHIVELOG.
- La fonctionnalité Flashback Database doit être activée (
ALTER DATABASE FLASHBACK ON). - Une Fast Recovery Area doit être configurée avec suffisamment d’espace.
- La base doit être montée en mode MOUNT (non ouverte) pour exécuter la commande.
Syntaxe de FLASHBACK DATABASE
FLASHBACK [ STANDBY ] DATABASE [ database_name ]
TO { SCN scn_value
| TIMESTAMP timestamp_value
| RESTORE POINT restore_point_name
| BEFORE SCN scn_value
| BEFORE TIMESTAMP timestamp_value
| BEFORE RESET LOGS
};
Explication des paramètres
| Paramètre | Description |
|---|---|
STANDBY | Applique le flashback sur une base de données standby (Data Guard). |
TO SCN | Retourne la base au SCN exact spécifié. |
TO TIMESTAMP | Retourne la base à un horodatage précis (date/heure). |
TO RESTORE POINT | Retourne la base à un restore point nommé, normal ou garanti. |
BEFORE SCN | Retourne la base à l’état immédiatement avant le SCN indiqué. |
BEFORE TIMESTAMP | Retourne la base à l’état immédiatement avant l’horodatage indiqué. |
BEFORE RESET LOGS | Retourne la base à l’état juste avant la dernière ouverture avec RESETLOGS. |
Exemples pratiques de FLASHBACK DATABASE
Exemple 1 – Retour à un horodatage précis après une erreur de migration
Contexte : Une équipe applicative a exécuté par erreur un script de migration à 14h32 qui a supprimé des données critiques dans la base de production. Le DBA souhaite ramener la base à 14h25.
-- Étape 1 : Se connecter à RMAN et monter la base
-- (exécuté depuis RMAN CLI)
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
-- Étape 2 : Lancer le flashback à l'horodatage souhaité
RMAN> FLASHBACK DATABASE
TO TIMESTAMP TO_TIMESTAMP('2024-11-15 14:25:00', 'YYYY-MM-DD HH24:MI:SS');
-- Étape 3 : Ouvrir la base avec RESETLOGS pour valider la récupération
RMAN> ALTER DATABASE OPEN RESETLOGS;
⚠️ L’ouverture avec RESETLOGS est obligatoire après un FLASHBACK DATABASE. Elle recrée les redo logs en ligne et démarre une nouvelle incarnation de la base.
Exemple 2 – Utilisation d’un Restore Point garanti pour les tests
Contexte : Avant une série de tests de non-régression en environnement de qualification, le DBA crée un restore point garanti. Une fois les tests terminés, il remet la base dans l’état initial.
-- Étape 1 : Créer un restore point garanti avant les tests
-- (exécuté en SQL*Plus avec privilèges SYSDBA)
CREATE RESTORE POINT avant_tests_recette GUARANTEE FLASHBACK DATABASE;
-- Étape 2 : Les tests sont exécutés... données modifiées, tables tronquées, etc.
-- Étape 3 : Remettre la base dans l'état initial après les tests
-- Connexion RMAN
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> FLASHBACK DATABASE TO RESTORE POINT avant_tests_recette;
-- Étape 4 : Réouverture de la base
RMAN> ALTER DATABASE OPEN RESETLOGS;
-- Étape 5 : Supprimer le restore point devenu inutile
DROP RESTORE POINT avant_tests_recette;
💡 Les Guaranteed Restore Points conservent les flashback logs nécessaires indéfiniment, même si la FRA manque d’espace (Oracle ne les supprimera pas automatiquement). Attention à monitorer l’espace disque.
Erreurs courantes avec FLASHBACK DATABASE
Erreur ORA-38729 : Not enough flashback database log data
Message Oracle :
ORA-38729: Not enough flashback database log data to do FLASHBACK.
Cause : Oracle ne dispose pas de suffisamment de flashback logs pour rembobiner la base jusqu’au point demandé. Cela arrive lorsque :
- La rétention des flashback logs (
DB_FLASHBACK_RETENTION_TARGET) est trop courte. - La FRA était pleine et Oracle a dû supprimer des flashback logs anciens pour libérer de l’espace.
- Le point cible est antérieur à l’activation de la fonctionnalité Flashback Database.
Solution :
- Vérifier la rétention configurée :
SHOW PARAMETER DB_FLASHBACK_RETENTION_TARGET - Augmenter la valeur et la taille de la FRA :
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 2880;(en minutes, ici 48h) - En dernier recours, utiliser une restauration RMAN classique depuis les sauvegardes.
- Utiliser des Guaranteed Restore Points pour les opérations planifiées critiques afin d’éviter la suppression automatique des logs.
Résumé
| Point clé | Détail |
|---|---|
| Objectif | Rembobiner toute la base de données à un état passé |
| Prérequis | Mode ARCHIVELOG, Flashback activé, FRA configurée |
| Cibles possibles | SCN, TIMESTAMP, RESTORE POINT, BEFORE SCN/TIMESTAMP |
| Connexion requise | SYSDBA, base en mode MOUNT |
| Après l’opération | Ouverture obligatoire avec RESETLOGS |
| Erreur fréquente | ORA-38729 : logs insuffisants, augmenter la rétention FRA |
| Outil recommandé | RMAN (Recovery Manager) |
Bonnes pratiques Oracle
- Créer systématiquement un Guaranteed Restore Point avant toute opération à risque (migration, déploiement, tests de charge) : c’est le filet de sécurité le plus efficace et le moins coûteux en temps de restauration.
- Monitorer l’espace de la Fast Recovery Area régulièrement via la vue
V$RECOVERY_FILE_DESTet alerter dès que le taux d’occupation dépasse 80 % : une FRA saturée entraîne la suppression silencieuse des flashback logs et rend FLASHBACK DATABASE inopérant.
Aller plus loin
Pour approfondir vos connaissances sur la récupération et la gestion des données dans Oracle, consultez ces ressources complémentaires disponibles sur courssql.com :
- FLASHBACK TABLE Oracle — Apprenez à restaurer une table individuelle à un instant passé sans toucher au reste de la base, grâce aux Undo Data.
- RMAN Oracle : sauvegarde et restauration — Maîtrisez Recovery Manager pour mettre en place une stratégie de sauvegarde robuste et complémentaire à Flashback Database.
- RESTORE POINT Oracle — Découvrez comment créer, gérer et utiliser les restore points normaux et garantis pour sécuriser vos opérations sensibles.
Sur le même thème
- AUDIT Oracle SQL : Surveiller et tracer les accès
- RMAN Oracle : Sauvegarde et Restauration de Base de Données
- EXPLAIN PLAN Oracle : analyser les requêtes SQL
- GRANT Oracle : Gérer les Droits et Privilèges SQL
- SAVEPOINT Oracle : Gérer les points de sauvegarde SQL
- FLASHBACK TABLE Oracle : Restaurer une table facilement
