Les fichiers Redo Logs
Généralités
Les fichiers Redo Logs servent à enregistrer toutes les modifications commitées effectuées sur le base de données. Ils servent à protéger la base de données dans le cas d'un échec d'instance. En cas de restauration de la base de données, on utilise les redo logs pour 'rejouer' les modifications qui ont eu lieu; les transactions validées (commit à la fin de la transaction) sont enregistrées dans les fichiers de données Oracle et les transactions non validées, s'il y en a, sont effacées des fichiers de données.
C'est le processus LGWR qui écrit les redo logs, et ce de façon circulaire. Il y 'remplissage' d'un redo log, puis, lors d'un switch de redo log, LGWR passe au redo log suivant, et passe ainsi de groupe en groupe. Tous les membres d'un même groupe sont synchronisés par LGWR, ce sont les mêmes fichiers, leurs contenus sont identiques. Pour supporter ce mode de fonctionnement, il faut en toute logique deux groupes de redo logs au minimum, et un membre par groupe.
En fait quand on parle de switch de redo log, LGWR passe au groupe suivant, toujours en écrivant dans tous les membres. Le fait d'avoir un seul membre par groupe constitue un point d'échec unique qui peut être évité en multiplexant les redo logs, c'est à dire en plaçant les membres de chaque groupe sur des disques physiques différents. Le restauration est difficile si des redo logs sont corrompus, perdus ou détruits, Oracle recommande que les fichiers redo soient toujours multiplexés.
Basculement de Redo Logs
Lors d'un basculement de redo logs (switch logfile), le groupe de redo logs courant reçoit un numéro de séquence log qui identifie les informations stockées dans le groupe de fichiers redo logs et sert également à la synchronisation.
Le basculement de redo log est automatique, le DBA n'a rien à faire. Il peut en revanche forcer un switch de redo logs par la commande ALTER SYSTEM SWITCH LOGFILE. Cette commande est utilisée pour des opérations de maintenance ou de modifications sur les redo logs online.
Un basculement se produit lorsque LGWR arrête d'écrire dans un groupe de fichiers Redo Logs et commence à écrire dans un autre. Lors d'un basculement de fichier log, un point de synchronisation se produit.
Les commandes
Création d'un groupe de Redo Logs online
ALTER DATABASE ADD LOGFILE GROUP 3 ('log1c.rdo', 'log2c.rdo') size 500K;
Le paramètre GROUP est optionnel, mais mieux vaut le spécifier. Entre les parenthèses, donnez le chemin complet des redo logs (/oracle/DATA/redo_3/log1c.rdo par exemple).
Ajout/Création d'un membre Redo Logs online
ALTER DATABASE ADD LOGFILE MEMBER 'log3c.rdo' TO GROUP 3;
Il n'est pas nécessaire ici de donner la taille du nouveau membre, la taille de celui-ci va être déterminée par la taille des autres membres du groupe.
Suppression d'un groupe de Redo Logs
ALTER DATABASE DROP LOGFILE GROUP 3;
Rappel : il faut au minimum deux groupes de redo logs. Vérifiez d'abord que le groupe à supprimer n'est pas le groupe actif (celui utilisé en ce moment par LGWR) avec la vue dynamique V$LOG.
(la suite arrive...)
Vues dynamiques
A ce sujet... (à venir)