Vous êtes sur la page 1sur 13

/INDEX .

PHP/ACCUEIL
https://fr.linkedin.com/in/romainferraton
Search...
TLCHARGEMENTS DE COURS
/INDEX .PHP/T
https://twitter.com/polymorpheorg ELECHARGEMENTSDECOURS
/
TUTORIAUX
https://plus.google.com/+Architecture
/INDEX .PHP/TUTORIAUX/

MEMBRES /INDEX .PHP/NEWS/


performanceFr

Sauvegarde dune base de donnes


Oracle Stratgie Incrmentale L0 et L1
crit par Romain Ferraton C Mis jour : 7 avril 2014 < Affichages : 3786 8

Vote 5 NOTE

Dans cet article nous allons voir comment crer un catalogue pour l'utilitaire RMAN. Ce
catalogue va hberger les rfrences des fichiers sauvegards, leurs significations et
dates. Ces informations seront galement stockes dans le control file de la base de
donnes mais seront trs utiles en cas de crash complet ou de corruption de ce control
file, il est donc prudent et recommand d'hberger ce catalogue sur une autre machine
si les bases sont sur des VM, il faudra trouver une autre VMalloue sur un host physique
diffrent.

Les sauvegardes L0 et L1 sont respectivement des sauvegardes compltes et


incrmentales, toutes les deux sont des sauvegardes chaud base ouverteelles ne sont
possibles que si la base de donnes est en mode ARCHIVELOG. L'unique sauvegarde
chaud possible en mode NOARCHIVELOG est l'export datapump de prfrence.

Allonsy !

Prparation du Catalogue RMAN


Il faut soit crer une base spcifique pour hberger le catalogue RMAN soit en utiliser
une dja existante et crer un utilisateur/schma pour abriter les objets du catalogue.
Cette base devra tre sauvegarde autrement que via RMAN via un export datapump
par exemple

1 SQL>connectSYSTEM@RMAN
1 SQL>connectSYSTEM@RMAN
2 Enterpassword:
3 Connected.
4 SQL>CREATETABLESPACERMANDATAFILE'RMAN.dbf'SIZE128MAUTOEXTEND
5
6 Tablespacecreated.
7
8 SQL>CREATEUSERRMANIDENTIFIEDBYRMAN
9 TEMPORARYTABLESPACETEMP
10 DEFAULTTABLESPACERMAN
11 QUOTAUNLIMITEDONRMAN;
12
13 Usercreated.
14
15 SQL>GRANTRECOVERY_CATALOG_OWNERTORMAN;
16
17 Grantsucceeded.

On va ensuite initialiser le catalogue en lanant lutilitaire RMAN en ligne de commande :


?

1 [oracle]$rmancatalogRMAN/RMAN@RMAN
1 [oracle]$rmancatalogRMAN/RMAN@RMAN
2
3 RecoveryManager:Release10.2.0.5.0ProductiononTueMar2511:39:432014
4
5 Copyright(c)1982,2007,Oracle.Allrightsreserved.
6
7 connectedtorecoverycatalogdatabase
8
9
10
11 RMAN>CREATECATALOG;
12
13 recoverycatalogcreated
14
15
16 RMAN>EXIT

On enregistre ensuite la base sauvegarder dans le catalogue RMAN.

Si la base est une base situe sur le serveur on aura pralablement lancer un oraenv ou
positionner les variables ORACLE_HOME et ORACLE_SID

1 [oracle]$rmantarget=/catalogRMAN/RMAN@RMAN ?

2 RMAN>REGISTERDATABASE;
3
4 databaseregisteredinrecoverycatalog
5 startingfullresyncofrecoverycatalog
6 fullresynccomplete

On peut lister les schemas de la base source :

1 RMAN>REPORTSCHEMA; ?

2
3 Reportofdatabaseschema
4
5 ListofPermanentDatafiles
6 ===========================
7 FileSize(MB)TablespaceRBsegsDatafileName
8
9 1960SYSTEMYES/gnx/system/system01.dbf
10 27560UNDOTBS1YES/gnx/rbs/undotbs01.dbf
11 34688SYSAUXNO/gnx/system/sysaux01.dbf
12 48960DATA_EVENO/gnx/data/DATA_EVE02.dbf
13 516384DATA_EVLNO/gnx/data/DATA_EVL2.dbf
14 618512DATA_EVPNO/gnx/data/DATA_EVP02.dbf
15 710240DATA_EVRNO/gnx/data/DATA_EVR02.dbf
16 812000DATA_EVTNO/gnx/data/DATA_EVT02.dbf
17 91500DATA_EVYDNO/gnx/data/DATA_EVYD02.dbf
18 101500DATA_EVYENO/gnx/data/DATA_EVYE02.dbf
19 1112388DATA_GNXNO/gnx/data/DATA_GNX01.dbf
20 121900DATA_MSKNO/gnx/data/DATA_MSK02.dbf
21 132200DATA_P_ECRNO/gnx/data/DATA_P_ECR02.dbf
22 141000DATA_P_LCHNO/gnx/data/DATA_P_LCH02.dbf
23 158448DATA_PMVNO/gnx/data/DATA_PMV02.dbf
24 165120IDX_EVENO/gnx/index/IDX_EVE02.dbf
25 1714336IDX_EVLNO/gnx/index/IDX_EVL02.dbf
26 1816748IDX_EVPNO/gnx/data/IDX_EVP02.dbf
27 198048IDX_EVRNO/gnx/index/IDX_EVR02.dbf
28 209280IDX_EVTNO/gnx/index/IDX_EVT02.dbf
29 212432IDX_EVYDNO/gnx/index/IDX_EVYD02.dbf
30 222048IDX_EVYENO/gnx/index/IDX_EVYE02.dbf
31 2312364IDX_GNXNO/gnx/index/IDX_GNX01.dbf
32 243632IDX_MSKNO/gnx/index/IDX_MSK02.dbf
33 251580IDX_P_ECRNO/gnx/index/IDX_P_ECR02.dbf
34 261520IDX_P_LCHNO/gnx/index/IDX_P_LCH02.dbf
34 261520IDX_P_LCHNO/gnx/index/IDX_P_LCH02.dbf
35 276700IDX_PMVNO/gnx/index/IDX_PMV02.dbf
36
37 ListofTemporaryFiles
38 =======================
39 FileSize(MB)TablespaceMaxsize(MB)TempfileName
40
41 116384TEMP16384/gnx/temp/temp01.dbf

On regarde la configuration de RMAN et on ajuste en fonction des besoins :

1 RMAN>showall; ?

2
3 RMANconfigurationparametersare:
4 CONFIGURERETENTIONPOLICYTORECOVERYWINDOWOF14DAYS;
5 CONFIGUREBACKUPOPTIMIZATIONON;
6 CONFIGUREDEFAULTDEVICETYPETODISK;
7 CONFIGURECONTROLFILEAUTOBACKUPON;
8 CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISK
9 CONFIGUREDEVICETYPEDISKPARALLELISM1BACKUPTYPETOBACKUPSET;#
10 CONFIGUREDATAFILEBACKUPCOPIESFORDEVICETYPEDISKTO1;#
11 CONFIGUREARCHIVELOGBACKUPCOPIESFORDEVICETYPEDISKTO1;#
12 CONFIGUREMAXSETSIZETOUNLIMITED;#default
13 CONFIGUREENCRYPTIONFORDATABASEOFF;#default
14 CONFIGUREENCRYPTIONALGORITHM'AES128';#default
15 CONFIGUREARCHIVELOGDELETIONPOLICYTONONE;#default
16 CONFIGURESNAPSHOTCONTROLFILENAMETO'/oracle/10.2.0/dbs/snapcf_GNX.f'

1 RMAN>CONFIGUREDEVICETYPEDISKBACKUPTYPETOCOMPRESSEDBACKUPSETPARALLELISM
?

2
2
3 newRMANconfigurationparameters:
4 CONFIGUREDEVICETYPEDISKBACKUPTYPETOCOMPRESSEDBACKUPSETPARALLELISM4;
5 newRMANconfigurationparametersaresuccessfullystored
6 startingfullresyncofrecoverycatalog
7 fullresynccomplete
8
9
10
11 RMAN>CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISK
12
13 oldRMANconfigurationparameters:
14 CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISK
15 newRMANconfigurationparameters:
16 CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISK
17 newRMANconfigurationparametersaresuccessfullystored
18 startingfullresyncofrecoverycatalog
19 fullresynccomplete
20
21
22
23 RMAN>CONFIGURESNAPSHOTCONTROLFILENAMETO'/backup/rman/GNX_SNAPSHOT_CONTROL.O
24
25 snapshotcontrolfilenamesetto:/backup/rman/GNX_SNAPSHOT_CONTROL.ORA
26 newRMANconfigurationparametersaresuccessfullystored
27
28
29
30 RMAN>CONFIGURECHANNELDEVICETYPEDISKFORMAT'/backup/rman/%U'
31
32 newRMANconfigurationparameters:
33 CONFIGURECHANNELDEVICETYPEDISKFORMAT'/backup/rman/%U';
34 newRMANconfigurationparametersaresuccessfullystored
35 startingfullresyncofrecoverycatalog
36 fullresynccomplete
37
38
37
38
39
40 RMAN>showall;
41
42 RMANconfigurationparametersare:
43 CONFIGURERETENTIONPOLICYTORECOVERYWINDOWOF14DAYS;
44 CONFIGUREBACKUPOPTIMIZATIONON;
45 CONFIGUREDEFAULTDEVICETYPETODISK;
46 CONFIGURECONTROLFILEAUTOBACKUPON;
47 CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISK
48 CONFIGUREDEVICETYPEDISKBACKUPTYPETOCOMPRESSEDBACKUPSETPARALLELISM4;
49 CONFIGUREDATAFILEBACKUPCOPIESFORDEVICETYPEDISKTO1;#
50 CONFIGUREARCHIVELOGBACKUPCOPIESFORDEVICETYPEDISKTO1;#
51 CONFIGURECHANNELDEVICETYPEDISKFORMAT'/backup/rman/%U';
52 CONFIGUREMAXSETSIZETOUNLIMITED;#default
53 CONFIGUREENCRYPTIONFORDATABASEOFF;#default
54 CONFIGUREENCRYPTIONALGORITHM'AES128';#default
55 CONFIGUREARCHIVELOGDELETIONPOLICYTONONE;#default
56 CONFIGURESNAPSHOTCONTROLFILENAMETO'/backup/rman/GNX_SNAPSHOT_CONTROL.ORA'

Scripts de sauvegarde

Sauvegarde de Niveau L0
On va crer un script de sauvegarde socle pour les sauvegardes incrmentales de niveau
suprieur. La sauvegarde L0 sera lance chaque semaine le dimanche 22h. Il effectuera
la sauvegarde L0 ainsi quune purge des anciennes sauvegardes obsoltes selon la
configuration de la rtention de RMAN.

Pour cette purge, il faut bien comprendre la notion de rtention. Lorsquon dit RMAN
davoir une rtention de 14 jours, cela ne signifie pas quil ne va conserver que les fichiers
plus rcents que 14 jours mais quil pourra revenir J14. Ainsi il pourra conserver des
sauvegardes L0 et L1 ncessaires pour revenir cette date. Do limportance de faire des
L0 intervalle rgulier car sans cela RMAN ne pourra pas purger les sauvegardes de
niveau L1.

Le script /oracle/admin/scripts/rman/RMAN_BCK_L0_GNX.sh

1 #!/bin/bash ?

2 exportSHELL=/bin/bash;
3 exportPATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/NX/bin
4 exportORACLE_SID=GNX
5 exportORACLE_HOME=/oracle/11.2.0/db_home1
6 echo"======================================================"
7 echo"StartingRMAN_HB_L0_backup.sh"
8 echo"======================================================"
9 echo.
10 echo"====Archivingcurrentredolog"
11 date
12 echo.
13 rmanTARGET=/CATALOGRMAN/RMAN@RMAN<<EOF
14 run
15 {
16 SQL'ALTERSYSTEMARCHIVELOGCURRENT';
17 }
18 EXIT;
19 EOF
19 EOF
20 echo.
21 echo"====StartingLevel0Backup"
22 date
23 echo.
24 rmanTARGET=/CATALOGRMAN/RMAN@RMAN<<EOF
25 run
26 {
27 ALLOCATECHANNELD1TYPEDISKFORMAT'/backup/rman/GNX_RMAN_BCK_L0_%d_%u_%s_%p'
28 BACKUPINCREMENTALLEVEL0DATABASEPLUSARCHIVELOGTAG'GNX_DB_ARC_INC_L0'
29 #reportobsolete;
30 DELETENOPROMPTOBSOLETE;
31 DELETENOPROMPTEXPIREDBACKUP;
32 }
33 EXIT;
34 EOF
35 echo.
36 echo"====EndofLevel0DatabaseBackuptagGNX_INC_L0"
37 date
38 echo.

Sauvegarde de niveau L1
Le sauvegardes de niveau L1 vont sauvegarder uniquement les donnes ayant t
modifies depuis la dernire sauvegarde de niveau gal ou infrieur L1 ou L0 donc

Le script suivant effectue une sauvegarde de niveau L1 et des archivelog suivi dune purge
des archive et des sauvegardes obsoltes

script /oracle/admin/scripts/rman/RMAN_BCK_L1_GNX.sh
1 #!/bin/bash ?

2 exportSHELL=/bin/bash;
3 exportPATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/NX/bin
4 exportORACLE_SID=GNX
5 exportORACLE_HOME=/oracle/11.2.0/db_home1
6 echo"======================================================"
7 echo"StartingRMAN_HB_L1_backup.sh"
8 echo"======================================================"
9 echo.
10 echo"====Archivingcurrentredolog"
11 date
12 echo.
13 rmanTARGET=/CATALOGRMAN/RMAN@RMAN<<EOF
14 run
15 {
16 SQL'ALTERSYSTEMARCHIVELOGCURRENT';
17 }
18 EXIT;
19 EOF
20 echo.
21 echo"====StartingLevel1Backup"
22 date
23 echo.
24 rmanTARGET=/CATALOGRMAN/RMAN@RMAN<<EOF
25 run
26 {
27 ALLOCATECHANNELD1TYPEDISKFORMAT
28 '/backup/rman/GNX_RMAN_BCK_L1_%d_%u_%s_%p';
29 BACKUPINCREMENTALLEVEL1DATABASETAG'GNX_DB_INC_L1';
30 BACKUPARCHIVELOGALLDELETEALLINPUT;
31 #REPORTOBSOLETE;
32 DELETENOPROMPTOBSOLETE;
33 DELETENOPROMPTEXPIREDBACKUP;
34 #RELEASECHANNELD1;
35 }
36 EXIT;
37 EOF
36 EXIT;
37 EOF
38 echo.
39 echo"====EndofLevel1DatabaseBackuptagGNX_DB_INC_L1"
40 date
41 echo.

Automatisation des sauvegardes

Il faut ensuite automatiser le lancement de ces scripts. Le cron est une solution simple,
une autre solution serait de lancer ces scripts avec Nagios par exemple. La surveillance
des backups peut tre fait avec Nagios et un plugin SQL en interrogeant les tables
V_$RMAN_xxx

La crontab

1 4523**7/oracle/11.2.0/admin/scripts/rman/RMAN_BCK_L0_GNX.sh1>>/oracle/11.2.
?

2 0021/4**16/oracle/11.2.0/admin/scripts/rman/RMAN_BCK_L1_GNX.sh1>>/oracle/

Activation du BCT Block Change Tracking


pour acclrer les sauvegardes L1
Oracle est capable de suivre les blocs de donnes ayant changer entre deux sauvegardes
vitant RMAN le balayage de toutes les donnes lors des sauvegardes L1 ou suprieur.

Pour cela lancer la commande suivante en tant que DBA :

1 ALTERDATABASEENABLEBLOCKCHANGETRACKINGUSINGFILE'/oracle/bct/bctf01.log'
?

AJOUTERVOSCOMMENTAIRES

Merci de vous identifier pour pouvoir poster un commentaire

Identifiant Mot de passe

S'enregistrer /index.php?option=com_comprofiler&task=registers Mot de passe oubli? /index.php?


Se souvenir de moi S'identifier
option=com_comprofiler&task=lostpassword

Poster un commentaire en tant qu'invit


Nom Requis: Site web: