L’outil RMAN (pour Recovery MANager) est l’outil standard d’ Oracle, pour faire les sauvegardes / restaurations de manière efficace et documentée.
Il est disponible depuis la version 8 d’Oracle, et ne cesse d’évoluer au fur et à mesure des versions.
Il permet de :
- faire des sauvegardes physique ou logiques de la base (tablespaces, fichiers de données, de fichiers de contrôle et de fichiers d’archive (archivelog), totales ou partielles
- faire des sauvegardes incrémentielles (différentielles ou cumulatives) au niveau bloc
- documenter les sauvegardes dans un catalogue partagé, ou dans les fichiers de contrôle (dédié donc)
- gérer les périodes de rétention des sauvegardes
- de faire des duplications de base simplement
Pour une information complète sur RMAN voir par exemple le manuel de référence complet 11gR1 :
http://psoug.org/reference/rman.html
La base doit être en ARCHIVELOG pour pouvoir faire des BACKUP / RESTORE cohérents. Sinon on obtien une erreur du style :
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03009: failure of backup command on ORA_DISK_1 channel at 06/10/2011 18:26:31 ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
Voir le paragraphe ‘Verification des hypothèse de sécurité’ pour passer en mode archivelo
Types de sauvegarde
RMAN autorise des sauvegardes de type :
- COMPLET (ou FULL) : on sauvegarde tous les blocs
- Incrémentale
Les sauvegardes incrémentales
Une sauvegarde incrémentale permet comme son nom l’indique de ne pas sauvegarder la totalité des données tous les jours, mais simplement ce qui a été modifié depuis une certaine période.
Il en existe 2 types, qui se différencient par leur mode de résumé des opérations précédentes.
- DIFFERENTIEL : on ne sauvegarde que les blocs modifiés depuis la précédente sauvegarde de niveau n ou inférieur
- CUMULATIF : on ne sauvegarde que les blocs modifiés depuis la précédente sauvegarde de niveau n-1
Pour ce faire RMAN utilise des niveaux de sauvegarde (3) :
le Niveau 0 : Sauvegarde de référence : l’ensemble des blocs contenant des données
le Niveau 1 : Sauvegarde tous les blocs modifiés depuis la plus récente sauvegarde incrémentale de niveau 0
le Niveau 2 : sauvegarde tous les blocs modifiés depuis la plus récente sauvegarde incrémentale de niveau 0, 1 ou 2.
En différentiel ca fait ca :

et en cumulatif (qui permet de gagner du temps lors de la restaure…ca fait ca ;

Quelques commandes RMAN utiles
CONFIGURE
permet de paramétrre le fonctionnement de RMAN.
BACKUP
Sauvegarde les DB Files, archive logs, backups et copies
CHANGE
Change le statut d’un backup ou d’une copie dans le catalogue RMAN .
LIST
affiche des infos générales sur l’état des sauvegardes/restaurations
COPY
Fait des copies ‘images’ des database files, archived logs, backups, et copies.
CROSSCHECK
Vérifie l’existence des backup pieces, copies proxy et disques copies
DELETE
Efface les backups et copies, passe les enregistrements de metadonnées
du CONTROL FILE au statut DELETED ou suppriime les metadonnées du CATALOG (le cas éch
RECOVER
Fait un media recovery sur les backups et copies RMAN
REPORT
Fait un rapport sur diverses infos utiles : quels fichiers ont besoin de backups,
sont obsoletes ou irrécupérables, liste les fichiers de la DB.
RESTORE
Restaure les backups et copies RMAN
RUN
Utile pour executer certaines commandes (sans les entrer directement) comme ALLOCATE CHANNEL ou SET
configure la session RMAN courante
SHOW
affiche les commandes CONFIGURE courantesQuelques exemples :
– on travaillait sur bande et on veut plus…
RMAN> configure default device type to disk;
– on alloue un canal et on travaille sur disque
RMAN> run
2> { allocate channel c1 device type disk;
3> }
allocated channel: c1 channel c1: SID=99 device type=DISK released channel: c1
RMAN> configure controlfile autobackup on;-- backup complet de la base par défaut RMAN> backup database; -- faire 1 image copy (copie binaire de fichiers) RMAN> backup as copy database; -- backup db en tant que backup set RMAN> backup as backupset database; -- backup a database and archived logs to disk; in backup set format RMAN> backup as backupset device type disk database plus archivelog;-- Show copy information for all image copiesRMAN> list copy; -- Show backup information for all backup pieces RMAN> list backup; -- Show all backup details for backup sets RMAN> list backup of database; RMAN> list copy of datafile 1, 2, 3; -- which files need backing up under current retention policy RMAN> report need backup database; -- list all datafiles for which an unrecoverable operation has been performed -- against an object in the datafile since the last backup of the datafile. RMAN> report unrecoverable; -- Show items that beed 7 days worth of -- archivelogs to recover completely RMAN> report need backup days = 7 database; -- Show/Delete items not needed for recovery RMAN> report obsolete;RMAN> delete obsolete; -- Show/Delete items not needed for point-in-time -- recovery within the last week RMAN> report obsolete recovery window of 7 days; RMAN> delete obsolete recovery window of 7 days; -- Show/Delete items with more than 2 newer copies available RMAN> report obsolete redundancy = 2 device type disk; RMAN> delete obsolete redundancy = 2 device type disk; -- Show datafiles that connot currently be recovered RMAN> report unrecoverable database;RMAN> report unrecoverable tablespace USERS;
Se connecter à RMAN
RMAN est un outil sous forme de commande binaire d’oracle. On peut le lancer et se connecter à son référentiel de différentes façons :
-- lancement de RMAN sans connexion au référentiel $>rman-- puis, connexion à une cible locale -- (on utilise le CONTROL FILE comme référentiel!) -- l'environnement (ORACLE_SID et autres, doit etre OK) RMAN> connect TARGET sys/password@targetSID -- on se connecte à un référentiel basé externe (le catalogue) RMAN> connect CATALOG rman_user/password@rmanSID -- on secoonecte à la cible par défaut en authent externe $>rman target /
Configuration de RMAN
La commande CONFIGURE permet de paramétrre le fonctionnement de RMAN.
La syntaxe est du genre ‘CONFIGURE OPTION VALEUR;’.
Il est possible de vérifier la configuration courante de RMAN avec la commande SHOW ALL.
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/WORK_RMAN_APP2/prdun/%F’;
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO COMPRESSED BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM ‘AES128′; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘/work/oracle/prdun/rman/backup/snapcf_PRDUN.f’;
RMAN>
Quelques avantages de RMAN
C’est un outil puissant injustement sous utilisé. Il offre entre autre
- l’intégration dans l’interface graphique de OEM Grid Control
- la simplicité (tous les fichiers physiques constituant la DB sont catalogués)
- d’être en standard avec la license Oracle (depuis la 8i)
- la gestion multibase centralisée possible (avec le catalogue)
- la synchronisation auto avec les disques ou le gestionnaire de Media (CROSSCHECK) en cas de modif des fichiers OS
- des politiques de rétention configurable
- une compatibilité avec les technos Oracle (! mais si) avancées (RAC, dataguard, TBS transportable, ASM, …)
- la possibilité de faire des clones (+ ou - jumeaux) des bases de données (DUPLICATE)
Quelques exemples de scénarios de sauvegardes restauration avec RMAN
sauvegarde complète minimaliste
connect target /
configure controlfile autobackup on ;
run {
backup database plus archivelog ‘ ;
}
sauvegarde complète
-- ici toutes les valeurs ne sont pas par défaut-- on précise la rétention, les formats de fichiers et on nettoie ce qui ne sert plus...connect TARGET /CONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/(put backup directory here)/autobackup_control_file%F’;CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;run {ALLOCATE CHANNEL RMAN_BACK_CH01 TYPE DISK;CROSSCHECK BACKUP;BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT ‘/(put backup directory here)/databasefiles_%d_%u_%s_%T’;sql ‘ALTER SYSTEM ARCHIVE LOG CURRENT’;BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL FORMAT ‘/(put backup directory here)/archivelogs_%d_%u_%s_%T’ DELETE INPUT;BACKUP AS COMPRESSED BACKUPSET CURRENT CONTROLFILE FORMAT ‘/(put backup directory here)/controlfile_%d_%u_%s_%T’;CROSSCHECK BACKUP;DELETE NOPROMPT OBSOLETE;DELETE NOPROMPT EXPIRED BACKUP;RELEASE CHANNEL RMAN_BACK_CH01;}EXIT;
restauration complète
$rman catalog rman/rmanpwd@aliascatalog target /
Recovery Manager: Release 9.2.0.1.0 - 64bit Production Copyright (c) 1995, 2002, Oracle Corporation.
All rights reserved.
connected to target database: DB1 (DBID=1966171371)
connected to recovery catalog database
RMAN> Run {
allocate channel t1 type disk;
restore database;
recover database;
sql “alter database open”;
}
De la même façon que précédemment, on alloue un canal de type disk. On restaure la base de données. Etant donné qu’il n’y a aucun paramètre complémentaire, RMAN prend la dernière sauvegarde valide. Ensuite on applique un recover ayant pour effet de réappliquer l’ensemble des archives et des redo logs actifs. Et enfin on ouvre la base pour la rendre disponible à nouveau.
restauration de tablespace à chaud
$rman catalog rman/rmanpwd@aliascatalog target /
Recovery Manager: Release 9.2.0.1.0 - 64bit Production Copyright (c) 1995, 2002, Oracle Corporation.
All rights reserved.
connected to target database: DB1 (DBID=1966171371)
connected to recovery catalog database
RMAN> Run {
sql “alter tablespace TBS_DATA offline”;
allocate channel t1 type disk;
restore tablespace TBS_DATA;
recover tablespace TBS_DATA;
sql “alter tablespace TBS_DATA online;”;
}
Il faut mettre le tablespace offline avant de pouvoir le restaurer. Ensuite on le restaure et on le remet online.
Les différents types de restauration sont très nombreux, on peut restaurer uniquement un fichier, ou des archives logs, etc…
Bonus track
erreur lors du backup RMAN :
RMAN> backup XXXX…
Starting backup at 10/06/2011
…
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 06/10/2011 18:44:38
ORA-19504: failed to create file “/work/dba1/backup/UN_3tmei7sk_125_1″
ORA-27040: file create error, unable to create file
IBM AIX RISC System/6000 Error: 2: No such file or directory
solution 1 : donner les bons droits d’accès au répertoire
solution 2 : le répertoire n’existe pas …le créer
solution 3 : changer la destination des fichiers de backup pour être conforme à l’OS
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/work/dba1/backup/%d_%u_%s_%p’;
new RMAN configuration parameters are successfully stored
Repartir a 0
RESET des backups…
RMAN> DELETE EXPIRED BACKUPSET;