par , 23/06/2017 à 11h19 (3988 Affichages)
Introduction
Sauvegarder une base de donnée, rien de plus simple.
La restaurer, ce n'est techniquement pas compliqué, mais souvent horriblement long... et il faut savoir où on "met les pieds" .
Restaurer, cela nécessite
- l'arrêt de la base
- son redémarrage en mode nomount
- la maîtrise de rman
- l'écrasement (= la réécriture) de tous les fichiers de la base modifiés depuis la dernière sauvegarde
- la restauration de tous les journaux d'archives créés entre le début de la dernière sauvegarde et l'heure de la reprise souhaitée
- la relecture et l'exécution de toutes les transactions situées dans les journaux d'archive
Une solution plus simple consiste à utiliser le flashback database d'Oracle.
Oracle détruit alors ce qu'il a fait (fait machine arrière) plutôt que de restaurer sa base "from scratch"...
Installer Flashback DB
1 2 3
| alter system set db_recovery_file_dest='+DGARCH' scope=spfile sid='*';
alter system set db_recovery_file_dest_size='80G' scope=spfile sid='*';
alter system set db_flashback_retention_target=5760 scope=spfile sid='*'; |
Activer Flashback database
1 2 3
| SQL> alter database flashback on ;-- ne nécessite plus de reboot depuis 11g
Database altered. |
Bien valider que le flashback soit bien activé sur la base
1 2 3 4 5
| SQL> select flashback_on from v$database ;
FLASHBACK_ON
------------------
YES |
Créer un point de restauration : cela aide au niveau de la récupération PITR (Point in time recovery)
1 2 3
| SQL> create restore point Before_MEP ;
Restore point created. |
Valider l'existence du point de restauration
1 2 3 4 5
| SELECT name, scn, time, database_incarnation#, guarantee_flashback_database, storage_size FROM v$restore_point;
NAME SCN TIME DATABASE_INCARNATION# GUA STORAGE_SIZE
------------- ------------ ----------------------------- --------------------- --- ----------------
BEFORE_MEP 9496219 23.06.17 11:04:26.000000000 1 NO 0 |
Restaurer une base
Arrêter la base, que ce soit en mode standalone ou Cluster, puis la remonter en mode exclusif et exécuter la restauration
1 2 3 4
| sqlplus / as sysdba
SQL> startup mount exclusive ;
SQL> FLASHBACK DATABASE TO RESTORE POINT Before_MEP ;
SQL> alter database open resetlogs ; |
Dans le cas où la restauration n'est plus nécessaire, supprimer le point d'arrêt
1 2
| SQL> drop restore point Before_MEP ;
Restore point dropped. |