RMAN (Recovery Manager) est l’outil d’Oracle pour la sauvegarde des bases de données, il est donc dommage (pour ne pas employer d’autre terme) d’utiliser un autre utilitaire que celui-ci pour sauvegarder les données Oracle.

RMAN permet de sauvegarder des données à froid comme à chaud en toute sécurité. Les sauvegardes peuvent être FULL, différentielles ou cumulatives et sont basées sur un référentiel nommé REPOSITORY qui peut se trouver dans les fichiers de dontrole d’une database ou qui peut être externalisé dans une instance prévue à cet effet (REPOSITORY CATALOG ou “catalogue de récupération”).

0 – Utilisation de RMAN avec les fichiers de contrôles

Si vous utilisez les fichiers de controle comme référentiel RMAN, il est encore plus critique de ne pas les perdres, le multiplexage sur plusieurs disques et/ou plusieurs fileSystem est une obligation pour s’assurer de pouvoir restaurer une sauvegarde !

Les données conservées dans un fichier de contrôle ne sont pas éternelles et sont fixées par le paramètre d’init de l’instance CONTROL_FILE_RECORD_KEEP_TIME. La valeur par défaut de ce paramètre est 7 (une semaine), dans le cadre de l’utilisation de RMAN, je vous conseille de porter ce chiffre à 15 voire 30 !

1 – Utilisation de RMAN avec un catalogue de récupération (recommandé)

1.1 Introduction

La méthode de connexion d’un client RMAN sur la catalogue de récupération (instance de base de données dédiée à stoquer les informations RMAN dans une databse plustot que dans les fichiers de controles) est la suivante :

> rman TARGET <user_db>/<pass_bd>@<alias_db> CATALOG <user_cat>/<pass_cat>@<alias_cat>

Il faut bien différencier dans cette commande le TARGET qui concerne les informations sur la base de données à sauvegarde ou à restaurer du CATALOG qui indique la chaine de connexion au catalogue de récupération.

1.2 Création du catalogue

L’opération consiste, dans l’instance de base de données prévue à cet effet, à créer un tablespace et un user pour rman, puis, d’éffectuer un grant particulier au user rman:

# ORACLE_SID=rmancat
# sqlplus / as sysdba
SQL> create tablespace rman_ts datafile '/data/rman/ts/ts01.dbf' size 50M next 10M unlimited;
Tablespace Created
SQL> create user rman identified by rmanpass default tablespace rman_ts;
SQL> grant connect, resource, recovery_catalog to rman;
SQL> exit

Et voilà : le grant RECOVERY_CATALOG suffit à indiquer que l’utilisateur rman a le droit d’interroger et d’interragir avec Oracle pour toute opération de sauvegarde / restauration.

1.3 Utilisation du catalogue

A chaque nouvelle base de données à sauvegarder par rman, il faut informer rman qu’il doit l’inscrire au préalablement dans le catalogue (fichier de controle ou catalogue de récupération). Ceci se fait par la commande

RMAN> register database;

Un DBID est affecté par rman au référentiel afin de différencier toutes les databases qui peuvent provenir de différents hosts et donc avoir les mêmes dbdid locaux ou dbname. Toutes les informations nécessaires aux futures sauvegardes / restaurations sont égallement créées (fichiers à sauvegarder, emplacements des journaux, …)

1.4 Consultation du catalogue

1.4.1 Commande REPORT

La commande rman REPORT permet d’obtenir des informations sur l’état des sauvegardes, par exemple :

report schema : quelle est la structure de la base de données ?

report need backup : quels sont les fichiers qui nécessitent une sauvegarde ?

report need backup incremental 3 : même question pour les incrémentales de niveau 3

report need backup days 3 : même question pour les fichiers non sauvegardés depuis 3 jours

report obsolete : quels sont les fichiers qui peuvent être éffacés (conformément à la politique de sauvegarde)?

report unrecoverables : quels sont les fichiers introuvables et non restaurables ?

1.4.2 Commande LIST

La commande rman LIST permet d’obtenir des détails sur des sauvegardes ou certains éléments d’une sauvegarde, par exemple :

list backup; (liste de toutes les sauvegardes)

list backupset; (liste de tous les backupsets)

list backupset of datafile ‘/data/mabase/tablespaces/data/data01.dbf’; (liste de tous les backupsets de ce fichier)

etc…

Note 1 : Le détail des commandes de consultation du catalogue seront plus profondément approfondies dans l’aspect sauvegarde / restauration des bases de données à l’aide de rman et n’ont pas vocation à être étudiée dans cet article qui a pour unique but d’attirer l’attention du DBA sur la qualité du référentiel RMAN.

Note 2 : N’ oubliez pas que, si vous perdez le recovery_catalog, vous ne pourrez plus restaurer aucune de vos sauvegardes de sera plus restaurable, il est donc primordial de le sauvegarder régulièrement. Le poids du catalogue étant très léger, vous n’aurez aucun problème à réaliser une sauvegarde complète journalière de celle-ci à froid, hors période de sauvegardes de vos autres databases.