Vous êtes sur la page 1sur 33

1

CHAPITRE 7 :
SAUVEGARDE ET RECUPERATION
DE BASES DE DONNEES

Enseignant : Malek ZRIBI


Plan du chapitre
2

 Sauvegarde de la base de données


 Sauvegarde base fermée (à froid)

• manuelle
• Automatique (par script)
 Sauvegarde base ouverte (à chaud)

 Récupération de la base de donnés après incident


 Import et export de données
 L’utilitaire Recovery Manager (Rman)

Enseignant : Malek ZRIBI


SAUVEGARDE MANUELLE BASE FERMEE (A FROID)
3

Principe: fermer la base de données et faire une copie de tous les fichiers
Etape 1 : sauvegarde de fichiers
1. accéder au serveur oracle en mode administrateur : Connect/as sysdba
2. Fermer la base : Shutdown immediate
3. Copier les trois type de fichiers (.ctl, .log et .dbf) dans un autre
emplacement.
Etpae 2 : récupération de la base et TEST
1. ouvrir la base : startup
2. supprimer des tables pour faire le test
3. afficher les tables : select * from tab;//vérification
4. Fermer la base : Shutdown immédiate
5. Supprimer les trois types de fichiers
6. Restaurer les fichiers copiés dans leur emplacement
7. Ouvrir la base : startup
8. afficher les tables : select * from tab;
Enseignant : Malek ZRIBI
SCRIPT AUTOMATIQUE DE SAUVEGARDE À FROID
4

Il faut créer le répertoire d:\archive et le fichier d:\scriptsauv.sql

Copier le script suivant dans un fichier d:\script1.sql puis l’exécuter par la


commande @ d:\script1.sql
Début du script:
Set feedback off
Set Trimspool off
Set Heading off
Set Verify off
spool d:\scriptsauv.sql
select 'host copy '||name || ' D:\archive' from v$datafile
union
select 'host copy '||name ||' D:\archive' from v$controlfile
union
select 'host copy '||member || ' D:\archive' from v$logfile;
spool off //fin du script
shutdown immediate
@ d:\scriptsauv.sql Enseignant : Malek ZRIBI
startup
RECUPERATION AVEC LA COMMANDE RECOVER
5

 Permet une récupération des données perdus.


 Les informations nécessaires pour cette opération sont
contenues dans les fichiers journaux et les fichiers journaux
archivés.
 Il faut passer en mode mount.

SYNTAXE:
RECOVER [AUTOMATIC ]
DATABASE [UNTIL CANCEL/DATE TIME/CHANGE SCN]
/TABLESPACE NOM
/DATAFILE ‘NOM_FICHIER’ /NUMERO_FICHIER

Enseignant : Malek ZRIBI


RÉCUPÉRATION DE LA BASE SUITE À LA PERTE D’UN
FICHIER DE DONNÉES DBF
6

Vérifier le mode de la base :

Enseignant : Malek ZRIBI


EXEMPLE DE RÉCUPÉRATION DE LA BASE SUITE À LA
PERTE D’UN FICHIER DE DONNÉES DBF
7

Pour pouvoir récupérer une base, le mode d’archivage doit être activé au
préalable:
- ETAPE 1 : Activer le mode Archivelog
Pour activer le mode d’archivage dans ORACLE, il faut procéder aux étapes
suivantes:

On ferme la base avec la commande :


shutdown immediate;
Puis on la remonte avec :
startup mount ;
Maintenant pour confirmer la modification on tape :
alter database archivelog ; //activer le mode archivelog
alter database open
RQ: en cas de problème, taper
startup force
Enseignant : Malek ZRIBI
EXEMPLE DE RÉCUPÉRATION DE LA BASE SUITE À LA
PERTE D’UN FICHIER DE DONNÉES
8

- Etape 2 : TEST
Pour tester maintenant notre travail on crée un tablespace et une table :
create tablespace TB
datafile ‘D:\TB.dbf’
size 10m ;
Créer un utilisateur :
Sql>create user user1 identified by user1 default tablespace tb;
Sql>grant connect, resource to user1;
Sql>connect user1/user1
Puis créer une table :
Sql> create table matable(col1 number) ;
Sql> insert into matable values(5) ;
Sql> commit ;
Enseignant : Malek ZRIBI
EXEMPLE DE RÉCUPÉRATION DE LA BASE SUITE À LA
PERTE D’UN FICHIER DE DONNÉES
9

On tape « shutdown immediate; » pour fermer la base.


Maintenant on va supprimer le fichier ou modifier le nom de TB.dbf
On revient a notre Invite de commandes on essai d’afficher le contenu de
notre table avec la commande « select * from matable ; » , bien sûr ça va
pas marcher car elle n’est pas reconnue.

- Etape 3 : Récupération avec la commande RECOVER


Pour récupérer nos données à partir du fichier journal on tape :
SQL>startup mount
SQL> alter database create datafile ‘D:\TB.dbf’ ;
Ou alter database create Datafile numero_fichier;
Puis pour confirmer on tape : Recover automatic datafile ‘D:\TB.dbf’
ou Recover automatic database;
Enfin on ouvre la base pour tester : alter database open ;

Enseignant : Malek ZRIBI


RESTAURATION APRÈS PERTE DES FICHIERS JOURNAUX
10

Enseignant : Malek ZRIBI


SAUVEGARDE A CHAUD (BASE OUVERTE)
11

Pour faire une sauvegarde à chaud (sur une base ouverte, il est
indispensable d’activer le mode ARCHIVELOG).

Pour cela, nous allons commencer par activer le


mode ARCHIVELOG sur notre base qui est fermée.
//////En cas de plusieurs bases de données
C:\ SET ORACLE_SID=orcl////

Activer le mode ARCHIVELOG :


SQL> CONNECT / AS SYSDBA;
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN; Enseignant : Malek ZRIBI
SAUVEGARDE A CHAUD (BASE OUVERTE)
12

Sous SQL PLUS :


SQL> SELECT name, log_mode FROM v$database;

Une fois que le mode ARCHIVELOG est activé, nous pouvons enfin commencer notre
sauvegarde sur Base ouverte !,

Le principe étant de lancer un point de sauvegarde avec la commande :


ALTER DATABASE BEGIN BACKUP

Ensuite, il faut copier manuellement tous les fichiers qui constituent notre base de
données (comme pour une sauvegarde à froid).

Une fois que nous avons fini de copier tous les fichiers, on arrête le point de
sauvegarde avec la commande ALTER DATABASE END BACKUP.
Enseignant : Malek ZRIBI
SAUVEGARDE (BASE OUVERTE) DE TABLESPACE
:

on commence par créer un point de sauvegarde pour le tablespace:


ALTER TABLESPACE NomDuTABLESPACE BEGIN BACKUP

Ensuite, il faut copier manuellement les fichiers (*.DBF) qui composent le TABLESPACE que
nous voulons sauvegarder.

Une fois que nous avons fini de copier tout le TABLESPACE, on arrête le point de
sauvegarde avec la commande :
ALTER TABLESPACE NomDuTABLESPACE END BACKUP.

Et voilà, notre TABLESPACE est maintenant sauvegardée.

Enseignant : Malek ZRIBI


13
SAUVEGARDE (BASE OUVERTE)
14

En cas de problème :

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter database recover automatic

SQL> alter database open

Enseignant : Malek ZRIBI


EXPORT/IMPORT DE TABLES
15

CONNECT / AS SYSDBA
Il faut créer un répertoire d’import export :
SQL>CREATE OR REPLACE DIRECTORY test AS ‘C:/export';
SQL>GRANT READ, WRITE ON DIRECTORY test TO scott;
Ensuite il faut donner à l’utilisateur les privilèges nécessaires:
SQL>Grant exp_full_database, imp_full_database to scott;

C:\> expdp scott/tiger@orcl tables=EMP,DEPT directory=TEST


dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log

C:\> impdp scott/tiger@orcl tables=EMP,DEPT directory=TEST


dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log
Enseignant : Malek ZRIBI
EXPORT/IMPORT DE SCHEMA
16

expdp scott/tiger@orcl schemas=SCOTT directory=TEST


dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

impdp scott/tiger@orcl schemas=SCOTT directory=TEST


dumpfile=SCOTT.dmp logfile=impdpSCOTT.log

Enseignant : Malek ZRIBI


EXPORT/IMPORT DE BASE COMPLETE
17

expdp system/password@orcl full=Y directory=TEST


dumpfile=DB.dmp logfile=expdpDB.log

impdp system/password@orcl full=Y directory=TEST


dumpfile=DB.dmp logfile=impdpDB.log

Enseignant : Malek ZRIBI


SAUVEGARDE AVEC RMAN (RECOVERY MANAGER)
18

 RECOVERY MANAGER est un utilitaire permettant


de sauvegarder et de récupérer une base de
données oracle, il est installé par défaut.
 utilise un référentiel/catalogue c'est a dire un
schéma dans une base (mais peut utiliser le fichier
de contrôle de la base de données cible ce qui est
encore moins pratique).
 il faut donc avoir une base pouvant accueillir RMAN

Enseignant : Malek ZRIBI


SAUVEGARDE AVEC RMAN (RECOVERY MANAGER)
19

 Il travaille au niveau blocs: vérification l'intégrité des


blocs, restauration d'un bloc corrompu, sauvegarde
plus rapide (blocs non déjà sauvegardé et non vide),
sauvegarde incrémentale.
 Il peut appliquer des politiques de rétention, de
purge automatique.
 Il connaît les structures des bases donc ce qu'il faut
sauvegarder, gère les réincarnations (resetlogs).
 Il peut compresser les sauvegardes.
 Il peut faire des rapports sur ce qui est obsolète, les
sauvegardes nécessaires Enseignant : Malek ZRIBI
Création d’un catalogue RMAN
20

 On doit créer un tablespace et un schéma utilisateur


pouvant acceuillir le catalogue.
Exemple: SQL> create tablespace rman_data datafile
‘c:\rman_data.dbf' size 64M;
SQL> create user rman identified by ****** default
tablespace rman_data;
 Ensuite il faut donner les privilèges au propriètaire
du catalogue:
Sql>Grant connect, resource, recovery_catalog_owner
to rman;
Enseignant : Malek ZRIBI
Initialiser le catalogue
21

Lancer RMAN en indiquant le schéma et la base


catalogue:
c:\> rman catalog rman/*****[@cat_sid]
Avec cat_sid: identifiant de la base contenant le
catalogue
Puis créer le catalogue en donnant le nom du tablespace
RMAN> create catalog tablespace rman_data ;

Enseignant : Malek ZRIBI


Ajouter la base cible
22

Lancer rman en indiquant le schèma du catalogue


C:\> rman catalog rman/***@cat_sid
RMAN> connect target sys/***@TargetSID
Avec TargetSID : identifiant de la base cible.
Puis inscrire la base cible dans le catalogue:
RMAN>register database ;

Enseignant : Malek ZRIBI


Resynchroniser la base cible
23

Pour resynchroniser une base cible en cas


d'ajout/changement de fichiers :
RMAN> connect target sys/***@TargetSID
RMAN> resync catalog ;

Enseignant : Malek ZRIBI


Configuration de RMAN
24

C:\> Rman catalog=rman/**@cat_sid


target=sys/**@target_sid
RMAN> configure default device type to disk;
RMAN> configure controlfile autobackup on;
RMAN> configure channel device type disk format
‘c:\oraclebackup\Backup%d_DB_%S_%P';
%d est remplacé par la date, %S par le numéro du jeu de
sauvegarde et %P par numéro de la pièce de sauvegarde
Rq/ l’emplacement destination des backup doit être de
préférence dans le chemin de la base cible.
Enseignant : Malek ZRIBI
Configuration de RMAN
25

RMAN> configure retention policy to recovery windows of


10 days;
# Récupération possible à n’importe quel point jusqu’à10
jours en arrière.
RMAN> configure backup optimization on;
RMAN> show all; # affiche toute la configuration
RMAN> list backup of database;
RMAN> list copy of tablespace "TOOLS"

Enseignant : Malek ZRIBI


Recovery Window
26

La sauvegarde du 14 janvier est nécessaire pour la récupération et les journaux archivés


de la séquence 500 jusqu’à séquence 850 sont appliqués

Enseignant : Malek ZRIBI


Configuration de RMAN
27

 CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO


COPY; # image copies
 CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO
BACKUPSET; # uncompressed
 CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO
COMPRESSED BACKUPSET; # compressed

Enseignant : Malek ZRIBI


Lancer la sauvegarde complète
28
de la base
C:>rman catalog=rman/**@cat_sid
target=sys/**@target_sid

RMAN> backup database plus archivelog;

plus archivelog est ajoutée pour inclure les fichiers


fichiers journaux.

Enseignant : Malek ZRIBI


Restauration
29

RMAN> Run
{
allocate channel t1 type disk;
restore database;
recover database;
sql "alter database open";
}

Enseignant : Malek ZRIBI


Sauvegardes incrémentales
30

 Par défaut RMAN exécute une sauvegarde complète


(full backup) qui inclut tous les blocs du fichier
sauvegardé.
 Par contre une sauvegarde incrémentale ne copie que
les données changés depuis la dernière sauvegarde.
 Peut être de niveau 0 ou 1.
 Une sauvegarde incrémentale de niveau 0 peut être
comme base pour tous les sauvegardes suivants de
niveau 1.
Enseignant : Malek ZRIBI
Sauvegardes incrémentales
31

Une sauvegarde incrémentale de niveau 1 peut être :


1. Une sauvegarde incrémentale différentielle. (par défaut)

Enseignant : Malek ZRIBI


Sauvegardes incrémentales
32

2. Une sauvegarde incrémentale cumulative

Enseignant : Malek ZRIBI


Commandes de sauvegarde incrémentale
33

 Sauvegarde incrémentale niveau 0 de toute la base:


RAMN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
 Sauvegarde incrémentale différentielle de niveau 1
des tablespaces system et tools.
RAMN> BACKUP INCREMENTAL LEVEL 1 TABLESPACE
SYSTEM, tools; //uniquement les blocs de données
changés depuis la dernière sauvegarde niveau 1ou 0.
 Sauvegrade incrémentale cumulative de niveau 1 :

RAMN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE


TABLESPACE users;//tous les blocs changés depuis la
dernière sauvegarde de niveau 0 seront copiés.
Enseignant : Malek ZRIBI

Vous aimerez peut-être aussi