Redo log
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
- Sauvegarde oracle — mode ARCHIVELOG et archivage des redo logs
- Instance — processus LGWR et checkpoint
- Log oracle — localisation des journaux (alert log, ADR)