Archive

Posts Tagged ‘archivelog’

Sauvegarde à froid avec RMAN, pas si simple !

March 24th, 2011 No comments
La section “Live !” de MySQL+ vous permet de suivre l’évolution de tests ou de recherches sur un sujet précis.
Le but de cette section et d’avoir une participation si possible active pour faire avancer les choses et ainsi proposer un article évolutif et complet.
Merci, donc, pour votre participation dans les commentaires !

[ Dernière mise à jour : 20/04/2011 ]

Mon problème ici se situe au niveau de la sauvegarde à froid avec RMAN mais surtout de la restauration !
Le processus d’archivelog n’est pas activé pour cette instance, c’est pourquoi il a été convenu de faire un backup à froid via RMAN.
Il n’y a pas de catalogue RMAN, les informations sont stockées dans les fichiers de contrôle. Il n’y a pas non plus d’autobackup des fichiers de contrôle.

Le script rman permettant de réaliser la sauvegarde est le suivant :

run
{
 shutdown immediate;
 startup mount;
 allocate Channel C1 type disk FORMAT '/opt/oracle/admin/backup/ora_df%t_s%s_s%p';
 allocate Channel C2 type disk FORMAT '/opt/oracle/admin/backup/ora_df%t_s%s_s%p';
 allocate Channel C3 type disk FORMAT '/opt/oracle/admin/backup/ora_df%t_s%s_s%p';
 allocate Channel C4 type disk FORMAT '/opt/oracle/admin/backup/ora_df%t_s%s_s%p';
 backup
 format '/opt/oracle/admin/backup/dly_%d_%s_%p_%T_%t_dbf'
 tag 'Daily_Full_db_Backup_<ID_UNIQUE>'
 (database include current controlfile) ;
 crosscheck backup;
 DELETE expired backup;
 shutdown immediate;
 startup;
}

J’usqu’ici, tout va bien, la sauvegarde ne pose pas de problème, passons à la restauration.
Dans un premier temps, je vais simplement faire une restauration du dernier backup.

Etape unique : Restauration du dernier backup :

Les ordres suivants sont à passer dans rman :

  • startup nomount force;
  • set DBID [DBID de votre instance]
  • run {
    alter database mount;
    restore database;
    }

Puis, dans sqlplus :

  • recover database until cancel;
  • Puis taper CANCEL, il n’y a pas d’archivelog je vous le rappelle !
  • alter database open resetlogs;

La restauration se passe normalement sans problème à ce niveau.
Je refais donc un nouveau jeu de 2 backups consécutifs, entre les deux, je mets à jour une table pour vérifier si la restauration est ok.

Le but à présent est de restaurer l’avant dernier backup puis le dernier backup. Et c’est là que les choses se compliquent.

Etape 1 : Restauration de l’avant dernier backup :

Je passe les ordres suivants dans rman :

  • startup nomount force;
  • set DBID [DBID de votre instance]
  • run {
    alter database mount;
    SET UNTIL SCN = [SCN de l'avant dernier backup]
    restore database;
    }

Puis, dans sqlplus :

  • recover database until cancel;
  • Puis taper CANCEL, il n’y a pas d’archivelog je vous le rappelle !
  • alter database open resetlogs;

C’est maintenant que les choses se compliquent, la restauration de l’avant dernier backup est ok, je veux à présent restaurer le dernier backup.

Etape 2 : Restauration du dernier backup :

Ici se pose un problème, mes fichiers de contrôle ont été restaurés à l’étape précédente, il ne contiennent donc plus les informations de la dernière sauvegarde.

Les étapes de restautation dans ce cas particulier sont donc les suivantes dans rman :

  • startup nomount force;
  • Restauration du spfile depuis le backup (optionnel, à faire seulement si ce fichier a été perdu) : RESTORE SPFILE FROM ‘<bck_spfile>’;
  • Restauration des derniers fichiers de contrôle : RESTORE CONTROLFILE FROM ‘<bck_ctrl_files>’ ;
  • alter database mount;
  • Restauration du dernier backup : restore database from TAG=’<TAG_NAME>’ ou restore database until SCN=<SCN_NUMBER>
  • recover database noredo;
  • alter database open resetlogs;

N’hésitez pas à partager votre expérience sur le sujet dans les commentaires pour faire évoluer cet article.

Categories: Live !, Oracle