Redo log

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Fichiers de journalisation (journal des transactions)
Vues clés V$LOG, V$LOGFILE, V$LOG_HISTORY
Bonne pratique ≥2 groupes, 2 à 3 membres par groupe
Voir aussi Sauvegarde oracle · Instance · Log oracle

Les redo logs (fichiers de journalisation, ou journaux de transactions) enregistrent toutes les modifications apportées à une base Oracle, permettant la récupération après crash et, si le mode ARCHIVELOG est activé, une restauration à un point dans le temps précis. Voir Sauvegarde oracle pour la stratégie d'archivage globale.

Vues principales

V$LOG            -- état des groupes de redo logs
V$LOGFILE        -- fichiers membres de chaque groupe
V$LOG_HISTORY    -- historique des bascules de groupe
  • État des groupes (taille, nombre de membres, statut) :
SELECT group#, sequence#, bytes/(1024*1024) size_mo, members, status FROM v$log;
  • Détail des membres (fichiers) par groupe :
SELECT group#, status, member, is_recovery_dest_file
FROM v$logfile
ORDER BY group#;
  • Historique des bascules :
SELECT sequence#, TO_CHAR(first_time,'DD/MM HH24:MI') date_bascule
FROM v$log_history;

Dimensionnement

Règle générale : dimensionner les redo logs pour obtenir une bascule de groupe (log switch) toutes les 20 à 30 minutes environ. La vue V$LOG_HISTORY permet d'observer la fréquence réelle des bascules :

  • bascules trop fréquentes → augmenter la taille des redo logs ;
  • attentes du process LGWR pendant la bascule → augmenter le nombre de groupes.

Administration des groupes et membres

  • Ajouter un membre à un groupe existant (multiplexage) — la taille du nouveau fichier doit
 être égale à celle des autres membres du groupe :
ALTER DATABASE ADD LOGFILE MEMBER 'chemin_fichier' [, ...] TO GROUP numero_groupe;
  • Ajouter un nouveau groupe :
ALTER DATABASE ADD LOGFILE [GROUP numero_groupe] specification_fichier [, ...];
ALTER DATABASE ADD LOGFILE GROUP 4
  ('/oradata/nom_base/redo04a.log',
   '/oradata/nom_base/redo04b.log') SIZE 50M;
  • Déplacer un membre (nécessite un arrêt/redémarrage en mode monté) :
SHUTDOWN IMMEDIATE;
-- déplacer physiquement le fichier au niveau OS --
STARTUP MOUNT;
ALTER DATABASE RENAME FILE '/oradata/nom_base/redo04a.log'
                      TO '/nouveau_chemin/redo04a.log';
ALTER DATABASE OPEN;
  • Supprimer un groupe (la base doit toujours en conserver au moins deux) :
ALTER DATABASE DROP LOGFILE GROUP 3;
  • Supprimer un membre d'un groupe :
ALTER DATABASE DROP LOGFILE MEMBER 'chemin_fichier' [, ...];
  • Forcer la bascule vers le groupe suivant :
ALTER SYSTEM SWITCH LOGFILE;

Fréquence des points de reprise (checkpoints)

V$INSTANCE_RECOVERY
SELECT value FROM v$parameter WHERE name = 'fast_start_mttr_target';
SELECT target_mttr, estimated_mttr, optimal_logfile_size FROM v$instance_recovery;

Voir aussi