Oracle 11g: restauration à partir de sauvegarde à chaud
Bonjour.
J’ai une base 11.1.0.6.0 sur Linux (Redhat 5).
J’essaye de faire une procédure de sauvegarde à chaud et de reconstruction de ma base en cas de crash avec évidemment récupération des données (utilisée aussi éventuellement pour alimenter une base de test).
Mais lors de la reconstruction de ma base ça ne passe pas. Voici mon mode opératoire :
J’ai passé ma base en mode archivelog (et en force logging).
Mes archives de redo log sont multiplexés sur mon disque de sauvegarde.
Pour la sauvegarde j’ai fait un script qui effectue :
Code:
1 2
| Archive log list;
Alter system switch logfile; |
Puis pour chacun des tablespaces de la base:
- passage du tablespace en mode backup (begin backup)
- copie du fichier sur mon disque de sauvegarde
- je repasse le tablespace en mode normal (end backup)
Puis à la fin de mon script :
Code:
1 2 3
| Alter database backup controlfile to /save/control.ctl REUSE ;
Alter system switch logfile;
Archive log list; |
Pour reconstruire une base en se servant de la sauvegarde :
- je repasse mes scripts de création de base vide.
- j’arrête ma base (shutdown immediate)
- j’écrase les datafiles (.dat et .dbf) avec ceux de la sauvegarde
- j’écrase les redo log et les archives de redo log avec ceux de la sauvegarde
- j’écrase mes 2 fichiers de contrôle avec le fichier control.ctl de la sauvegarde (là j’ai un gros doute !)
- je me connecte sous sysdba
- je monte ma base
- puis j’exécute la commande suivante :
Code:
recover database using backup controlfile ;
Il me demande alors les archives en me suggérant à chaque fois l’archive avec la bonne séquence (il m’affiche à chaque fois les erreurs ORA-00279, ORA-00289, ORA-00280). Donc je fais juste « Entrer » pour qu’il prenne en compte l’archive.
Ensuite je fais :
Code:
Alter database open resetlogs ;
Et là erreur :
Code:
1 2
| ORA-01113 : le fichier 1 nécessite une récupération après défaillance matérielle
ORA-01110 : fichier de données 1 : /base/ora_system.dbf |
J’avoue être perdue. Comme je ne maitrise pas le détail de ce que font les commandes, je n’arrive pas à trouver mon erreur.
Quelqu’un peut m’aider ?
Merci d'avance