Vous êtes sur la page 1sur 26

Cours Administration des bases de données

Enseignant : Malek ZRIBI


1

Chapitre 5 :
Gestion des fichiers de
contrôle et de journalisation
Gestion des fichiers de contrôle
2

 Lorsqu’une instance est lancée pour ouvrir une base de


données, le fichier de contrôle est le premier fichier
ouvert, il permet ensuite à l’instance de localiser et
d’ouvrir les autres fichiers de la base de données.
 Si on perd le fichier de control, la base de données
reste à l’état NOMOUNT, et ne pourra pas s’ouvrir.
 Le fichier de contrôle est automatiquement mis à jour
par Oracle lors de chaque modification de la structure
de la base de données (ajout ou déplacement de
fichier, …).
Gestion des fichiers de contrôle
3

Un fichier de contrôle contient les informations suivantes :


 Le nom et l’identifiant de la base de données

 Le nom et l’emplacement des fichiers de données et des


fichiers Redo Log
 Le nom des tablespaces

 La date et l’heure de création de la base de données

 Le numéro de séquence du journal courant

 Des informations relatives au point de synchronisation

 L’historique du journal

 Les informations de sauvegarde de l’utilitaire Recovery


Manager…).
Gestion des fichiers de contrôle
4

 Quand RMAN sauvegarde une base de données


(appelée base de données cible) des informations sont
toujours consignées dans le fichier de contrôle de la
base cible.
 Pour limiter la taille des fichiers de contrôle, les
anciennes entrées de sauvegarde sont écrasées après
un certain nombre de jour.
 Les fichiers de contrôle doivent être sauvegardés lors
de chaque sauvegarde complète ou partielle de la
base de données, de plus entre deux sauvegardes
normales.
Sauvegarde des fichiers de contrôle
5

 Pour effectuer une sauvegarde du fichier de contrôle,


utiliser l’ordre SQL :
SQL> ALTER DATABASE BACKUP CONTROLFILE TO
TRACE [AS ‘chemin\nomfichier’] [reuse] ;
 Le paramètre TRACE génère un script dans les fichiers
traces utilisateur.
 Permet de créer un script de création du fichier de
contrôle dans un fichier texte à spécifier.
 La modification des paramètres définis dans le fichier
de contrôle oblige à la recréation de celui-ci
Multiplexage du fichier de contrôle
6

 Il s’agit de faire une copie du fichier de contrôle qui


sera maintenue en miroir par Oracle.
 Le fichier de contrôle doit être multiplexé pour des

raisons de sécurité :
- Sans fichier de contrôle, la base ne peut pas démarrer
- Au moins deux fichiers de contrôle, si possible sur des
disques différents (et dans la pratique, un par disque)
Multiplexage du fichier de contrôle
7

 Arrêter la base proprement (pas ABORT !)


 Dupliquer un fichier de contrôle existant vers une
nouvelle destination.
 Mentionner le nouveau fichier de contrôle dans le
paramètre CONTROL_FILES:
SQL> ALTER SYSTEM SET CONTROL_FILES =
‘C:\...\CONTROL01.CTL, D:\...\CONTROL02.CTL,
E:\...\CONTROL03.CTL’ SCOPE= SPFILE;
 Redémarrer la base de données: SHUTDOWN
IMMEDIATE puis STARTUP
Création d’un nouveau fichier de contrôle
8

 Pour créer un nouveau fichier de contrôle:


 Afficher la liste des fichiers de contrôle, de données
et de journalisation.
 SELECT MEMBER FROM V$LOGFILE;
 SELECT NAME FROM V$DATAFILE;
 SELECT VALUE FROM V$PARAMETER WHERE NAME
= 'control_files';
 Arreter la base de données: Shutdown immediate
 STARTUP NOMOUNT
 Lancer la commande create controlfile
Création d’un nouveau fichier de contrôle
9

La commande ‘Create Controlfile ’ DATAFILE


permet de créer un nouveau ‘c:\oracle\prod\system01.dbf' SIZE
fichier de contrôle. 3M,
CREATE CONTROLFILE ‘c:\oracle\prod\rbs01.dbf' SIZE 5M,
SET DATABASE nom_base ‘c:\oracle\prod\users01.dbf' SIZE 5M,
LOGFILE GROUP 1 ‘c:\oracle\prod\temp01.dbf' SIZE 5M
(‘c:\oracle\prod\redo01_01.log', MAXLOGFILES 50
‘c:\oracle\prod\redo01_02.log'), MAXLOGMEMBERS 3
GROUP 2 (‘c:\ MAXLOGHISTORY 400
oracle\prod\redo02_01.log', MAXDATAFILES 200
‘c:\oracle\prod\redo02_02.log'), MAXINSTANCES 6
GROUP 3 ARCHIVELOG;
(‘c:\oracle\prod\redo03_01.log',
‘c:\oracle\prod\redo03_02.log')
RESETLOGS
Création d’un nouveau fichier de contrôle
10

 Récupérer la base de données si nécessaire(si


d’autres fichiers sont perdus à part le controlfile:
sql> Recover database
 ALTER DATABASE OPEN; OU
 ALTER DATABASE OPEN RESETLOGS;
 On ajoute RESETLOGS si on a mis cette instruction
dans create controlfile en cas de perte d’autres
fichiers et si un recover database est exécuté.
Vues du dictionnaire de données
11

 Interroger les vues :


V$CONTROLFILE
V$PARAMETER
Select name
From v$controlfile ;
OU
Select value
From v$parameter
where name = ‘control_file’ ;
Gestion des fichiers de journalisation
12

 Les fichiers de journalisation ou Redo Log enregistrent


toutes les modifications apportées à la base.
 Ils sont organisés en groupes composés d’un ou plusieurs
membres.
 Oracle les utilise de manière circulaire, les informations
sauvegardées sont donc par défaut périodiquement
écrasées.
 Au minimum la base de données a besoin de 2 groupes.
 Ils sont utilisés pour la restauration de la base après un
arrêt anormal de celle-ci.
Gestion des fichiers de journalisation
13

 Ils peuvent être réappliqués à une sauvegarde de


fichier de données, pour rejouer toutes les modifications
survenues entre la sauvegarde et un incident ayant
endommagé le fichier (c’est la restauration de média).
 Le processus LGWR écrit en parallèle dans chaque
membre d’un même groupe.
 Si un groupe de Redo Logs comporte plusieurs membres
et qu’un des membres est indisponible, la base de
données peut continuer à fonctionner.
 Mettre au minimum deux ou trois membres par groupe.
Gestion des fichiers de journalisation
14
Opérations sur les fichiers de journalisation
15

Les opérations d’administration qui peuvent être effectuées sur les


fichiers de redo log sont :
 Ajouter un nouveau groupe de fichiers de redo log permet
d’améliorer la disponibilité des fichiers de redo log pour LGWR
(en augmentant la durée d’un cycle complet de rotation).
 Multiplexer les membres de Redo Log pour sécuriser la base de
données
 Supprimer un groupe de fichiers de redo log, peut être utilisé
dans une opération d’augmentation de la taille des fichiers de
redo log (ajout d’un nouveau groupe plus gros puis suppression
d’un ancien).
 Supprimer un membre d’un groupe de fichiers de redo log

 Forcer le basculement du groupe courant au suivant peut être


effectué avant les sauvegardes des archives de Redo Logs.
Multiplexer les fichiers de Redo Log
16

SQL> ALTER DATABASE ADD LOGFILE MEMBER


‘nom_fichier’ [,…] TO GROUP numéro;
 Exemple :

ALTER DATABASE ADD LOGFILE MEMBER


‘E:\oracle\oradata\redo03.log’ TO GROUP 1;
 La taille du fichier n’a pas besoin d’être spécifiée ; le

nouveau fichier a forcément la même taille que les


autres membres du groupe
Ajouter un groupe de Redo Log
17

 Pour ajouter un nouveau groupe à la base de données


utilisez l’ordre SQL ALTER DATABASE :
SQL>ALTER DATABASE ADD LOGFILE [GROUP numéro]
spécification_fichier_redo [,…];
spécification_fichier_redo
(‘nom_fichier’ [,…]) [ SIZE valeur [K|M] ] [REUSE]
EXEMPLE :
ALTER DATABASE
ADD LOGFILE GROUP 4
(‘d:\oracle\oradata\redo04a.log’,
‘e:\oracle\oradata\redo04b.log’) SIZE 10240K;
Déplacer les fichiers de Redo Log
18

 lorsqu’on déplace un fichier de Redo Log il faut suivre le


mode opératoire ci-dessous et veiller à recopier le
fichier dans le nouvel emplacement avant d’effectuer la
commande RENAME FILE.
Déplacer les fichiers de Redo Log
19

SQL>Connect / as sysdba
SQL>Shutdown immediate
SQL>Startup mount
SQL> host copy ‘e:\oracle\oradata\redo04.log’
‘g:\oracle\oradata\redo04.log’
SQL>Alter database Rename file
‘e:\oracle\oradata\redo04.log’
to ‘g:\oracle\oradata\redo04.log’ ;
SQL>Alter database open ;
Suppression de l’ancien fichier à l’aide d’une commande
du système d’exploitation.
Supprimer un groupe de fichiers redo log
20

 La base doit avoir au moins 3 groupes de fichiers de


redo log pour pouvoir en supprimer un (il doit en rester
au moins 2).
 Le groupe courant (celui dans lequel LGWR est en train
d’écrire) ne peut pas être supprimé.
 En mode ARCHIVELOG, un groupe pas encore archivé
ne peut pas être supprimé.
 Les fichiers concernés ne sont pas physiquement
supprimés par Oracle, il faudra le faire après en
utilisant une commande du système d’exploitation.
Supprimer un groupe de fichiers redo log
21

La commande de suppression est la suivante:


SQL>ALTER DATABASE DROP LOGFILE GROUP numéro;
 Exemple

ALTER DATABASE DROP LOGFILE GROUP 4;


Supprimer un membre d’un groupe de
22
redo log
 Le groupe concerné doit avoir au moins 2 membres pour
pouvoir en supprimer un (il doit en rester au moins un).
 Un membre du groupe courant (celui dans lequel LGWR
est en train d’écrire) ne peut pas être supprimé.
 En mode ARCHIVELOG, un membre d’un groupe pas
encore archivé ne peut pas être supprimé.
 Les fichiers concernés ne sont pas physiquement
supprimés par Oracle.
 Pour supprimer tous les membres d’un groupe il faut
supprimer le groupe.
Supprimer un membre d’un groupe de
23
redo log

SQL>ALTER DATABASE DROP LOGFILE MEMBER


‘nom_fichier’ [,…] ;
EXEMPLE :
SQL> ALTER DATABASE DROP LOGFILE MEMBER
‘e:\oracle\oradata\redo01.log’;
Forcer le basculement du groupe courant
24

 Le basculement d’un groupe courant peut être utilisé


lorsque l’on a besoin d’effectuer une suppression de
groupe
 ou lorsque l’on veut générer une archive avant

d’effectuer une sauvegarde (la base de données doit


alors être en ARCHIVELOG).
 Utiliser l’ordre SQL ALTER SYSTEM :

SQL> ALTER SYSTEM SWITCH LOGFILE;


Forcer le basculement du groupe courant
25

 Si les SWITCH sont trop fréquents, ce n’est pas bon pour


les performances.
 La vue V$LOG_HISTORY peut être utilisée pour
analyser la fréquence de SWITCH des fichiers de Redo
Log (colonne FIRST_TIME).
 Le basculement manuel provoque les mêmes évènements
qu’un basculement automatique:
- Checkpoint : point de reprise
- Archivage (si l’archivage est activé)
Trouver des informations sur les fichiers
26
Redo Log
Plusieurs vues du dictionnaire permettent d’obtenir des
informations sur les fichiers de redo log :
 V$LOG : informations sur les groupes
 V$LOGFILE : informations sur les membres
 V$LOG_HISTORY : informations sur l’historique des
fichiers de redo log
 V$INSTANCE__RECOVERY : informations sur les temps
estimés de restauration d’instance.

Vous aimerez peut-être aussi