L’incrémentale avec mise à jour
A la place des sauvegardes complètes, il est possible de réaliser des sauvegardes incrémentales. Cette méthode de sauvegarde permet de copier uniquement les blocs de données qui ont subi des modifications depuis la dernière sauvegarde incrémentielle. Elle permet de réduire considérablement la quantité de données sauvegardées, réduisant ainsi l'espace et le temps requis pour exécuter l'opération et enregistrer les fichiers. Il est possible de combiner une sauvegarde de type copie-images de la base de données avec les sauvegardes incrémentales successives de la base de données.
La syntaxe de sauvegarde incrémentale qui permet d’effectuer une sauvegarde incrémentale avec mise à jour est :
BACKUP INCREMENTAL LEVEL valeur FOR RECOVER OF COPY
WITH TAG 'nom_sauvegarde_niveau' ;
FOR RECOVER Cette option spécifie que la sauvegarde incrémentale doit
OF COPY contenir tous les changements jusqu'au SCN du fichier dans la base de données cible. Cette option crée automatiquement la sauvegarde copie-images de tous les fichiers s’ils n’existent pas. Si les fichiers existent déjà, cette option crée un jeu de sauvegardes qui est utilisé pour appliquer les changements à la sauvegarde copie-image précédemment créée.
valeur Le niveau de la sauvegarde doit être automatiquement 1 ou supérieur.
TAG L'emploi d'un libellé avec une sauvegarde RMAN permet de se référer plus facilement à des sauvegardes spécifiques lors d'opérations de récupération.
L'emploi d'un libellé avec une sauvegarde RMAN nous permet d'appliquer la sauvegarde incrémentale à la bonne sauvegarde copie-image. Si la commande backup ne contient pas de libellé, RMAN en génère un automatiquement pour le jeu de sauvegardes qui est unique dans la base cible.
La syntaxe de sauvegarde incrémentale doit être accompagnée par la mise en place des changements dans la sauvegarde copie-image précédemment créée.
RECOVER COPY OF [WITH TAG 'libellé']
{ DATABASE | DATAFILE | TABLESPACE} ;
Pour aboutir, la commande de récupération précédente n’exige pas une sauvegarde de type copie-images. Si la sauvegarde n’existe pas, alors un message est affiché sans effet sur le déroulement la commande.
Il est possible de créer un script avec les deux commandes qui permet de sauvegarder et de mettre à jour les fichiers de la sauvegarde de copie-images. Il faut commencer par la commande « RECOVER » et continuer avec la commande « BACKUP ». Ainsi pour la première exécution, la commande « RECOVER » est sans effet et la commande « BACKUP » crée automatiquement la sauvegarde copie-images initiale.
RMAN> RUN
2> {
3> RECOVER COPY OF DATABASE
4> WITH TAG 'INC_COPY_MAJOUR';
5> BACKUP INCREMENTAL LEVEL 1
6> FOR RECOVER OF COPY WITH
7> TAG 'INC_COPY_MAJOUR'
8> DATABASE;
9> }
Démarrage de recover dans 14/07/08
canal affecté : ORA_DISK_1
canal ORA_DISK_1 : SID=111 type d'unité=DISK
aucune copie du fichier de données 1 n'a été trouvée pour la récupération
...
Fin de recover dans 14/07/08
Démarrage de backup dans 14/07/08
utilisation du canal ORA_DISK_1
aucun sauvegarde ou copie parent du fichier de données 2 n'a été trouvée
...
canal ORA_DISK_1 : démarrage de la copie de fichier de données
fichier de données en entrée, numéro=00002, nom=+DONNEES_01/diamant/datafile/sysaux.257.654522287
nom de fichier de sortie=+DONNEES_03/diamant/datafile/sysaux.281.660012221 balise=INC_COPY_MAJOUR RECID=5 STAMP=660012605
canal ORA_DISK_1 : copie de fichier de données terminée, temps écoulé : 00:06:48
canal ORA_DISK_1 : démarrage de la copie de fichier de données
fichier de données en entrée, numéro=00001, nom=+DONNEES_01/diamant/datafile/system.256.654522245
nom de fichier de sortie=+DONNEES_03/diamant/datafile/system.277.660012653 balise=INC_COPY_MAJOUR RECID=6 STAMP=660012757
canal ORA_DISK_1 : copie de fichier de données terminée, temps écoulé : 00:03:17
...
Pour la deuxième exécution ; la commande « RECOVER » n’a toujours pas de sauvegarde pour effectuer la mise en place des changements. La commande « BACKUP » effectue le premier jeu de sauvegardes qui permettra d’appliquer les changements à la sauvegarde copie-images par la commande « RECOVER » au pas suivant.
RMAN> RUN
2> {
3> RECOVER COPY OF DATABASE
4> WITH TAG 'INC_COPY_MAJOUR';
5> BACKUP INCREMENTAL LEVEL 1
6> FOR RECOVER OF COPY WITH
7> TAG 'INC_COPY_MAJOUR'
8> DATABASE;
9> }
Démarrage de recover dans 14/07/08
lancement de la resynchronisation complète du catalogue de récupération
resynchronisation complète terminée
utilisation du canal ORA_DISK_1
aucune copie du fichier de données 1 n'a été trouvée pour la récupération
...
Fin de recover dans 14/07/08
Démarrage de backup dans 14/07/08
utilisation du canal ORA_DISK_1
canal ORA_DISK_1 : démarrage de l'ensemble de sauvegarde compressé de fichiers de données de niveau incrémentiel 1
canal ORA_DISK_1 : insertion du(des) fichier(s) de données dans l'ensemble de sauvegarde
fichier de données en entrée, numéro=00002, nom=+DONNEES_01/diamant/datafile/sysaux.257.654522287
...
canal ORA_DISK_1 : démarrage de l'élément 1 dans 14/07/08
canal ORA_DISK_1 : élément 1 terminé dans 14/07/08
descripteur d'élément=+DONNEES_03/diamant/backupset/2008_07_14/nnndn1_tag20080714t032415_0.287.660021883 balise=TAG20080714T032415 commentaire=NONE
canal ORA_DISK_1 : ensemble de sauvegarde terminé, temps écoulé : 00:11:43
Fin de backup dans 14/07/08
...
RMAN> RUN
2> {
3> RECOVER COPY OF DATABASE
4> WITH TAG 'INC_COPY_MAJOUR';
5> BACKUP INCREMENTAL LEVEL 1
6> FOR RECOVER OF COPY WITH
7> TAG 'INC_COPY_MAJOUR'
8> DATABASE;
9> }
Démarrage de recover dans 14/07/08
utilisation du canal ORA_DISK_1
canal ORA_DISK_1 : démarrage de la restauration incrémentielle de l'ensemble de sauvegarde des fichiers de données
canal ORA_DISK_1 : définition des copies de fichier de données à récupérer
récupération de la copie du fichier de sauvegarde, numéro=00001, nom=+DONNEES_03/diamant/datafile/system.277.660012653
récupération de la copie du fichier de sauvegarde, numéro=00002, nom=+DONNEES_03/diamant/datafile/sysaux.281.660012221
...
Le suivi de changements de blocs
Lors d’une sauvegarde incrémentale traditionnelle, RMAN doit inspecter tous les blocs du tablespace ou fichier de données sauvegardé afin de déterminer ceux qui ont changé depuis la dernière sauvegarde. Mais lorsque la base de données est très grande, le temps requis pour examiner les blocs peut excéder de loin celui requis pour réaliser la sauvegarde.
Un moyen d'améliorer les performances des sauvegardes incrémentales consiste à activer le suivi des changements de blocs. Ainsi, pour le suivi des changements de blocs, RMAN utilise un fichier recensant ces changements qui lui permet de savoir d'emblée quels blocs ont été modifiés.
Oracle démarre le processus d’arrière-plan « CTWR » pour effectuer l’écriture des blocs dans le fichier de suivi des modifications.
L'espace occupé par ce fichier est égal à environ 1/250 000 de la taille de la base de données.
La syntaxe de mise en œuvre d’un fichier recensant les changements des blocs est la suivante :
ALTER DATABASE{ ENABLE BLOCK CHANGE TRACKING
[ USING FILE 'fichier' [ REUSE ] ]
| DISABLE BLOCK CHANGE TRACKING } ;
USING FILE Vous devez utiliser cette option si vous n’utilisez pas OMF. Sinon la clause est superflue.
REUSE Si vous utilisez l’option « USING FILE » et que le fichier existe déjà, vous devez utiliser cette option.
La vue dynamique de performances « V$BLOCK_CHANGE_TRACKING » contient le nom et la taille de ce fichier et indique si cette fonctionnalité a été activée.
[oracle@jupiter ~]$ . oraenv
ORACLE_SID = [gemmes] ? +ASM
[oracle@jupiter ~]$ rman target sys/Razvanpwd3@gemmes catalog rman/rman@topaze
Mot de passe de la base de données cible : XXXXXX
connecté à la base de données cible : GEMMES (DBID=1022042757)
connecté à la base de données du catalogue de récupération
RMAN> alter database enable block change tracking;
Instruction traitée
RMAN> select status, round(bytes/1024/1024) "Taille Mb", filename
2> from v$block_change_tracking;
STATUS Taille Mb
---------- ----------
FILENAME
------------------------------------------------------------------
ENABLED 11
+GD_DONNEES/GEMMES/CHANGETRACKING/ctf.284.842488053
RMAN> host 'asmcmd ls -s +GD_DONNEES/GEMMES/CHANGETRACKING';
Block_Size Blocks Bytes Space Name
512 22657 11600384 12582912 ctf.284.842488053
la commande hôte a été execute
RMAN> host 'ps -ef |grep ctwr | grep -v grep';
oracle 18852 1 0 00:27 ? 00:00:03 ora_ctwr_gemmes
la commande hôte a été exécutée