Sunteți pe pagina 1din 13

Mise en place d’une politique de sauvegarde avec RMAN

1 Présentation de RMAN

L’outil RMAN (Recovery Manager) est un utilitaire Oracle disponible en ligne de


commande. RMAN est un outil puissant spécialisé dans les sauvegardes de base de
données. Il dispose de multiples fonctionnalités qui permettent, entre autres, de réaliser
des sauvegardes et restaurations de base de données.
L’article s’appuie sur l’utilisation de RMAN sous Oracle 10g.

1.1 Le référentiel (Repository)


RMAN utilise un référentiel pour stocker un certain nombre d’informations nécessaires à
son utilisation.

Dans ce référentiel on trouve :


 la configuration de RMAN
 la structure de la base de données cible
 les fichiers de journalisations
 l’historique des sauvegardes réalisées

Ce référentiel est indispensable au bon fonctionnement de RMAN. Celui-ci peut être


stocké : soit dans les fichiers de contrôles de la base de données cible, soit dans un
catalogue de récupération.
 
Sauvegarde du référentiel dans les fichiers de contrôle

L’utilisation du référentiel via les fichiers de contrôle engendre plusieurs contraintes:


 Les fichiers de contrôle deviennent extrêmement critiques dans ce type de
configuration. En cas de perte des fichiers, vous ne disposerez plus d’informations
relatives aux sauvegardes effectuées via l’utilitaire RMAN.
 La taille des fichiers de contrôle doit être surveillée régulièrement. Les
informations concernant chaque sauvegarde étant enregistrées dans les fichiers
de contrôle, ceux-ci ont tendance à grossir de façon notable.
Le paramètre d’initialisation Oracle : CONTROL_FILE_RECORD_KEEP_TIME. Il
permet de déterminer la durée de conservation des informations de sauvegarde.
 Plusieurs fonctionnalités de RMAN seront désactivées. Il vous sera entre autre
impossible de stocker des scripts de sauvegarde ou de restauration pour la base
cible.

Malgré les contraintes évoquées ci-dessus, l’utilisation du référentiel via les fichiers de
contrôle permet de ne pas gérer un schéma supplémentaire.
 
Sauvegarde du référentiel dans un catalogue de récupération.

 
Le référentiel peut être stocké dans un catalogue de récupération. Pour utiliser cette
configuration, il est impératif de créer un nouveau schéma dans une base de données
différente de la base de données cible.
 
Un catalogue de récupération peut stocker plusieurs référentiels de base de données.
Cette infrastructure permet de centraliser la gestion des sauvegardes d’un système
d’information. En outre il permet de conserver les informations de sauvegarde, même en
cas de perte des fichiers de contrôle de la base cible.

1.2 La Zone de récupération rapide (Flash Recovery


Area)
Il existe depuis la version 9i d’Oracle une fonctionnalité permettant de restaurer à un
instant T une base de données. Cette fonctionnalité dite de « FlashBack » nécessite la
mise en place d’une zone de stockage spécifique : la zone de récupération rapide.
Nous verrons dans le chapitre dédié au flashback qu’il existe de nombreuses
fonctionnalités disponibles dans la version 10g. Il est maintenant possible de réaliser des
opérations de flashback à différents niveaux (ligne, table et base de données).

Sous RMAN il existe 2 modes pour réaliser les sauvegardes :

 La copie d’image : ce mode réalise une copie parfaite du fichier, il équivaut à


l’utilisation d’une fonction de copie au niveau du système d’exploitation. Le fichier
est copié bit à bit.
 Le jeu de sauvegarde : ce mode permet de réaliser un jeu de sauvegarde, celui-ci
contient un ou plusieurs fichiers. Par default RMAN ne crée qu’un seul élément de
sauvegarde. Une taille maximum pour un élément peut être définie. Si la
sauvegarde dépasse la taille, la sauvegarde contiendra plusieurs éléments.
Sous ce mode il est possible de réaliser une compression de la sauvegarde (Oracle
annonce une diminution de la taille par 5).

1.3 La commande RMAN


La commande RMAN doit être exécutée dans un invité de commande. Pour réaliser des sauvegardes et
restaurations il est important de connaître les principales options disponibles avec cette commande. Le
tableau ci-dessous énumère les principales options.

SYNTAXE DESCRIPTION
Représente la chaîne de connexion à la
TARGET=chaîne base de données cible.
Ex : TARGET SYS/password@mydatabase
Représente la chaîne de connexion à la
base de données contenant le catalogue
CATALOG=chaîne de récupération. Si aucun catalogue n’est
utilisé vous pouvez spécifier l’option
NOCATALOG (option par défaut)
Active l’écriture d’un fichier de log dans
LOG=logfile
lequel est inscrit la sortie de RMAN
Cette option permet d’ouvrir le fichier de
APPEND
log en ajout
Indique le chemin d’un fichier contenant
CMDFILE=fichier
des instructions pour RMAN. Les
ou
instructions sont lues et executées de
@fichier
façon sequentielle

1.4 Configuration de RMAN


Il existe plusieurs options de configurations dans RMAN, utilisées lors de l’exécution des
commandes de sauvegarde, restauration …
Pour visualiser les options définies pour votre infrastructure vous pouvez taper la
commande : SHOW ALL dans RMAN
Configuration de la politique de rétention

RMAN dispose d’une option permettant de définir le nombre de jours durant lesquels une
sauvegarde sera en mesure de restaurer l’état initial des données. Une fois ce délai
expiré, la sauvegarde sera marquée comme obsolète.

Ex :
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAY;

Cette commande définit un délai de 5 jours avant que les sauvegardes ne soient
considérées comme obsolètes.

En cas d’utilisation de la zone de récupération rapide, une gestion automatique des


sauvegardes obsolètes s’opère. Si un manque d’espace disque est détecté, une
suppression des sauvegardes obsolètes sera alors réalisée automatiquement.

Une seconde option concernant la politique de rétention est disponible sous RMAN. Il
s’agit de l’option permettant de définir le nombre de jeux de sauvegarde à conserver (par
défaut il est défini à 1).

Ex :
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY = 2;

Au-delà du deuxième jeu de sauvegarde, les jeux seront marqués comme invalides.

Pour revenir aux paramètres par défaut, utiliser la commande clear :


CONFIGURE RETENTION POLICY CLEAR ;

Configuration de la sauvegarde du fichier de contrôle

Une option est disponible afin de sauvegarder automatiquement le fichier de contrôle


après une sauvegarde.
Cette option est particulièrement intéressante dans une configuration où le référentiel
RMAN est sauvegardé dans les fichiers de contrôle.

Pour activer cette option :

CONFIGURE CONTROLFILE AUTOBACKUP ON ;

Par défaut le fichier sera sauvegardé au sein de la zone de récupération rapide. Si cette
zone n’a pas été définie ou si vous souhaitez modifier la destination par défaut il vous
faut modifier la valeur.

Modification du chemin :

RMAN> CONFIGURE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘path’

Pour revenir aux paramètres par défaut utiliser la commande clear :


CONFIGURE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;

Configuration des périphériques de stockage

 
Les sauvegardes réalisées par RMAN doivent être stockées sur un périphérique. La
destination par défaut est la zone de récupération rapide. Si cette zone n’est pas définie
une destination est choisie en fonction de votre plateforme.

Pour customiser vos sauvegardes, il faut définir une destination, un type de périphérique
et les options de formatages de vos fichiers sauvegardés.

 Définition du type de périphérique :

Pour les disques durs :


RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK TO DISK;

Pour les lecteurs de bandes :


RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK TO SBT;
 Paralléliser les sauvegardes :

Il est possible d’allouer plusieurs canaux de sauvegardes par type de périphériques.


Pour déclarer plusieurs canaux :

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK PARALLELISM 2 ;

RMAN> CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT ‘/u02/backup/%U’ ;


RMAN> CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT ‘/u02/backup/%U’;
 Définition de la destination et du format du fichier:

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/u02/backup/%U’ ;

La commande FORMAT dispose de plusieurs variables afin de générer le nom du fichier


de sauvegarde. Voici quelques-unes des variables les plus utiles :
 
 %U : génère un nom de fichier unique. Sa nomenclature diffère en fonction du
type de sauvegarde (copie d’image, jeu de sauvegarde, fichier de contrôle…)
 %c : numéro de l’élément de sauvegarde
 %d : nom de la base de données
 %e : numéro de séquence du fichier de journalisation archivé
 %f : numéro de fichier de donnée
 %I : identifiant de la base de données
 %N : nom du tablespace
 %t : date de la sauvegarde
Le nom du fichier généré doit être unique, sinon RMAN procédera à l’écrasement du
fichier qui porte le même nom.

2 Les sauvegardes

Il existe plusieurs types de sauvegarde disponibles sous RMAN :

 sauvegarde complète de la base


 sauvegarde incrémentale
 sauvegarde d’une portion de la base de données

Le mode dans lequel votre base s’exécute impacte les procédures de réalisation des
sauvegardes.

Il existe deux modes disponibles sous Oracle : ARCHIVELOG et NOARCHIVELOG


En mode ARCHIVELOG les fichiers de journalisations de la base sont archivés avant d’être
réutilisés.

Pour connaître le mode dans lequel une base de données est exécutée, il est possible de
consulter une vue du dictionnaire des données : V$DATABASE.

Si vous souhaitez modifier le mode vous pouvez taper la commande ci-dessous (votre
base de données doit être montée pour réaliser cette opération) :

SQL > ALTER DATABASE ARCHIVELOG ;

2.1 La commande BACKUP


Les sauvegardes sous RMAN s’effectuent via l’utilisation de la commande BACKUP.

L’utilisation de cette commande est disponible uniquement si votre base de données est
montée ou ouverte.
Attention, si votre base de données est en mode NOARCHIVELOG l’utilisation de la
commande BACKUP est uniquement disponible base montée.

Les principales options de BACKUP :

AS COPY ou AS BACKUPSET : fixe le mode de sauvegarde à utiliser

INCREMENTAL LEVEL n : indique si la sauvegarde est de type incrémental

ARCHIVELOG : sauvegarde les fichiers de journalisation archivés

CURRENT CONTROLFILE : sauvegarde du fichier de contrôle

DATABASE : sauvegarde l’intégralité de la base de données

DATAFILE : sauvegarde des fichiers de données

FORMAT : permet de définir le format pour le fichier de sauvegarde

TABLESPACE : sauvegarde les tablespaces

TAG : permet de définir un nom à la sauvegarde

SPFILE : sauvegarde le fichier de paramètre

Sauvegarde de la base de donnée complète :

BACKUP DATABASE;

Pour connaître les fichiers de la base de données et leur emplacement RMAN utilise le
fichier de contrôle.

Sauvegarde d’un tablespace :

BACKUP TABLESPACE data;

On peut spécifier plusieurs tablespaces avec la même commande :


BACKUP TABLESAPCE data, system;

Comme pour une sauvegarde complète, RMAN utilise le fichier de contrôle pour connaître
les fichiers de données qui composent le tablespace.

Sauvegarde d’un fichier de données :

BACKUP DATAFILE ‘/u01/oracle/oradata/datafile.dbf’;

Comme pour les tablespaces, on peut spécifier plusieurs fichiers.

Sauvegarde des fichiers de journalisations archivés :

La sauvegarde de ces fichiers est cruciale. En cas de crash de la base de données, la


restauration sera réalisée à partir de la dernière sauvegarde sur laquelle seront appliqués
les fichiers de journalisations.
Il est d’ailleurs conseillé de dupliquer ces fichiers sur plusieurs disques afin de disposer
d’une infrastructure résistant à une panne matérielle.

La commande BACKUP ARCHIVELOG est utilisée pour la sauvegarde.


Il existe plusieurs options disponibles avec cette commande :

ALL : sauvegarde tous les fichiers de journalisations archivés

FROM TIME ‘date’ : sauvegarde les fichiers archivés depuis la date indiquée

TIME BETWEEN : sauvegarde les fichiers archivés durant la période indiquée

UNTIL TIME : sauvegarde les fichiers archivés avant la date indiquée

La sauvegarde du fichier de contrôle et du fichier de paramètre est aussi disponible via


RMAN :

BACKUP CURRENT CONTROLFILE ;

BACKUP SPFILE ;

2.2 Les sauvegardes incrémentales


RMAN offre la possibilité de réaliser des sauvegardes incrémentales.

La sauvegarde incrémentale a l’avantage de sauvegarder uniquement les blocs modifiés


depuis la dernière sauvegarde. Cela vous permettra de diminuer la taille de vos fichiers
de sauvegardes.

Il existe pour les sauvegardes incrémentales 2 niveaux de sauvegarde :

 le niveau 0 : correspond à une sauvegarde complète de la base. Cette sauvegarde


est un pré-requis à une sauvegarde incrémentale de niveau 1.
 le niveau 1 : il existe deux options possibles pour les sauvegardes de niveau 1.
Une sauvegarde différentielle (schéma 1) ou cumulative (schéma 2)
                              

                              Schéma 1

Une sauvegarde différentielle de niveau 1 sauvegarde uniquement les blocs modifiés


depuis la dernière sauvegarde de niveau 0 ou 1. On peut imaginer réaliser une
sauvegarde de niveau 0 une fois par semaine puis exécuter chaque jour une sauvegarde
différentielle de niveau 1.

                    

                                                  Schéma 2

Une sauvegarde cumulative de niveau 1 sauvegarde les blocs modifiés depuis la dernière
sauvegarde de niveau 0. La taille des sauvegardes et donc plus importante dans cette
configuration.

Les commandes pour réaliser les sauvegardes incrémentales sont les suivantes:

Sauvegarde de niveau 0 :

BACKUP INCREMENTAL LEVEL 0 DATABASE;

Sauvegarde différentielle de niveau 1 : 


BACKUP INCREMENTAL LEVEL 1 DATABASE;

Sauvegarde cumulative de niveau 1 :


BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;

3 La restauration

La restauration est une partie délicate. Les procédures varient en fonction de la


configuration de votre base de données, du problème rencontré (fichier de données
corrompu, fichier de contrôle absent …) et de la stratégie de sauvegarde que vous avez
adoptée.

Le mode de fonctionnement de votre base de données (ARCHIVELOG ou NOARCHIVELOG)


est crucial pour la restauration.

3.1 En mode NOARCHIVELOG


Pour restaurer votre base de données, il vous faut appliquer la dernière
sauvegarde que vous avez réalisée base fermée (à froid).

Dans RMAN procéder à ces différentes étapes :

Démarre l’instance :
RMAN> STARTUP NOMOUNT ;

Généralement les fichiers de contrôle sont multiplexés, cependant si celui-


ci est manquant ou endommagé il faut procéder à une restauration :

RMAN> RESTORE CONTROLFILE FROM ‘chemin_de_la_sauvegarde’ ;


ou
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP (si vous utilisez la
sauvegarde automatique de votre fichier de contrôle)

Monter la base de données :


RMAN> ALTER DATABASE MOUNT ;

Restaurer la base de donnée (si vous utilisez des sauvegardes


incrémentales, RMAN récupère la dernière sauvegarde de niveau 0) :
RMAN> RESTORE DATABASE ;

Si des sauvegardes de niveau 1 sont disponibles vous pouvez procéder à


une récupération :
RMAN> RECOVER DATABASE NOREDO;

Ouvrir la base de données :


RMAN> ALTER DATABASE OPEN RESETLOGS;

3.2 En mode ARCHIVELOG


Pour la restauration complète d’une base de données (fichier de données):

Monter la base de données :


RMAN> STARTUP MOUNT;
Restaurer la base de données :
RMAN> RESTORE DATABASE ;

Récupérer la base de données :


RMAN> RECOVER DATABASE ;

Ouvrir la base de données :


RMAN> ALTER DATABASE OPEN;

Restauration des différents fichiers de l’instance.

Fichier de paramètre :

Démarrer l’instance
RMAN> STARTUP NOMOUNT

Restaurer le fichier de paramètre


RMAN> RESTORE SPFILE FROM ‘chemin_de_la_sauvegarde’ ;
ou
RMAN> RESTORE SPFILE FROM AUTOBACKUP (si vous utilisez la sauvegarde automatique
de votre fichier de contrôle)

Arrêt de l’instance :
RMAN> SHUTDOWN

Démarrer l’instance :
RMAN> STARTUP 

Tablespace :

 
Démarrer la base :
RMAN> STARTUP NOMOUNT;

 
Passer offline le tablespace à restaurer :
RMAN> SQL ‘ALTER TABLESPACE users OFFLINE’;

Restaurer le tablespace :
RMAN> RECOVER TABLESPACE users;

Passer online le tablespace à restaurer :


RMAN> SQL ‘ALTER TABLESPACE users ONLINE’;

 
Fichier de données:

Démarrer la base :
RMAN> STARTUP NOMOUNT;

Passer offline le fichier de données à restaurer :


RMAN> SQL ‘ALTER DATABASE DATAFILE 6 OFFLINE’;

Restauration du fichier de données :


RMAN> RESTORE DATAFILE 6 ;

Récupération du fichier de données :


RMAN> RECOVER DATAFILE 6 ;

Passer online le fichier de données à restaurer :


RMAN> SQL ‘ALTER DATABASE DATAFILE 6 ONLINE’

4 Les procédures de flashback

Le flashback est un mécanisme permettant le retour des données à un instant T du


passé. Il permet de pallier aux erreurs pouvant être commises par les utilisateurs ou les
administrateurs de la base de données.

Dans la version 10g de Oracle il existe 3 niveaux de retour possible :

 niveau de la base de donnée


 niveau d’une table
 niveau d’une ligne

L’utilisation du flashback nécessite la mise en place d’une zone de récupération rapide.


De plus, la base de données doit être en mode ARCHIVELOG.

4.1 Flashback au niveau de la base de données


L’utilisation du flashback de la base de données permet de rétablir la base de données
telle qu’elle était à un moment précis du passé.

Pour pouvoir utiliser cette fonctionnalité il vous faut passer votre base de données en
mode flashback.

La modification du mode s’exécute base montée

SQL> STARTUP MOUNT ;


SQL> ALTER DATABASE FLASHBACK ON ;
SQL> ALTER DATABASE OPEN ;

Une fois modifié, Oracle va générer de nouveaux fichiers: les flashback logs (extension
.flb). Ils sont automatiquement enregistrés dans la zone de récupération rapide.

Les flashbacks logs enregistrent une copie des blocs modifiés. La durée de conservation
des logs est définie via le paramètre : DB_FLASH_BACK_RETENTION_TARGET (valeur
exprimée en minutes – par défaut la valeur est spécifiée à 1440 minutes, soit une
journée) .
Si vous souhaitez pouvoir restaurer votre base de données à une date lointaine il vous
faut prévoir la mise en place d’une zone de récupération rapide avec un espace disque
suffisant.

Procédure de flashback d’une base de données :

L’opération s’effectue via la commande :


FLASHBACK DATABASE TO  ;

On peut définir une date ou un numéro SCN (System Change Number). Un numéro SCN
est attribué à chaque transaction validée dans la base de donnée.
Il faut que votre base soit montée.

SQL> STARTUP MOUNT ;

SQL> FLASHBACK DATABASE TO TIMESTAMP SYSDATE-1/24 ;


ou
SQL> FLASHBACK DATABASE TO SCN 436982938 ;

SQL> ALTER DATABASE OPEN RESETLOGS ;

Oracle va alors restaurer les blocs dans leur état puis les fichiers de journalisations vont
être appliqués afin de pallier un possible décalage entre la modification des blocs et leurs
enregistrements dans les flashback logs.

4.2 Flashback au niveau d’une table


Le flashback d’une table utilise la méthode d’annulation (UNDO) pour rétablir l’état d’une
table. Il n’est donc pas nécessaire d’activer le mode flashback pour ce niveau.
Il est par contre important de définir une taille conséquente pour le tablespace UNDO. En
effet, plus le tablespace disposera d’un espace disque important plus vous pourrez
remonter dans le temps. Il faut analyser vos besoins afin de déterminer la bonne taille.

Procédure de flashback d’une table :

Pour que l’opération de flashback soit possible il faut :


 avoir le privilège objet flashback sur la table
 avoir les privilèges : SELECT, INSERT, ALTER sur la table
 avoir le privilège de déplacement de ligne sur la table

L’opération s’effectue via la commande : FLASHBACK TABLE nom_de_la_table TO  ;

SQL> FLASHBACK TABLE ma_table TO TIMESTAMP SYSTIMESTAMP – INTERVAL ‘10’ MINUTE ;


ou
SQL> FLASHBACK TABLE ma_table TO SCN 436982938 ;

4.3 Flashback au niveau d’une ligne


Dans ce mode il existe 3 options :

 Flashback Query
 Flashback Version Query
 Flashback Transaction Query

Le flashback de ligne permet de récupérer la valeur des données à un moment donné. Il


est possible de requêter la base pour récupérer la valeur puis d’effectuer un update afin
de la remettre à l’état souhaité.

Flashback Query :

Commande :
 
SELECT colonne
FROM table AS OF TIMESTAMP – INTERVAL ‘5’ MINUTE
WHERE number = 10

On peut utiliser aussi un numéro SCN

SELECT colonne
FROM table AS OF SCN 87659876
WHERE number = 10

Flashback Version Query :

Le flashback Version Query permet de récupérer les différentes versions d’une ligne
durant un intervalle de temps donné.

Plusieurs options sont disponibles sur les versions :

VERSIONS_STARTTIME : date de début de modification de la ligne


VERSIONS_ENDTIME : date de fin de modification de la ligne
VERSIONS_STARTSCN : numéro SCN de début de modification de la ligne
VERSIONS_ENDSCN : numéro SCN de fin de modification de la ligne
VERSIONS_OPERATION : type d’opération réalisée : I (Insert), U (Update), D (Delete)
VERSIONS_XID : numéro d’identification unique de la transaction

Commande :

SELECT versions_starttime, versions_endtime, versions_startscn, versions_endscn,


versions_operation, versions_xid, ma_colonne
FROM ma_table VERSIONS BETWEEN TO TIMESTAMP (‘2006-09-08’, ‘YYYY-MM-DD) AND TO
TIMESTAMP (‘2006-09-12’, ‘YYYY-MM-DD)
WHERE number = 20;

Flashback Transaction Query :

Il permet de requêter la base pour retrouver les transactions effectuées sur la base de
données durant un intervalle de temps.

Pour réaliser ces opérations il faut interroger la vue : FLASHBACK_TRANSACTION_QUERY

Les colonnes de cette vue sont les suivantes:

XID : identifiant unique de la transaction


START_SCN : numéro SCN de la transaction
START_TIMESTAMP : date de la transaction
COMMIT_SCN : numéro SCN lors de la validation de la transaction (COMMIT)
COMMIT_TIMESTAMP: date de la validation de la transaction (COMMIT)
LOGON_USER: compte utilisateur utilisé
OPERATION: type de l’ordre (INSERT, UPDATE, DELETE)
TABLE_NAME: nom de la table
TABLE_OWNER: nom du propriétaire de la table
ROW_ID: identifiant de la ligne
Les recherches peuvent donc porter sur plusieurs critères. L’utilisateur peut effectuer des
recherches très fines pour visualiser les modifications réalisées sur un intervalle de temps
donné

S-ar putea să vă placă și