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.

en savoir

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