Dans une base de données Oracle, toutes les transactions sont enregistrées dans des fichiers redo-log. Ce sont ces fichiers qui
permettent une restauration en cas de panne de la base de données ou par exemple en cas d’arrêt brutal d’un serveur.
Ces fichiers sont très importants pour la sécurité de la base ainsi que pour sa performance. Les redo-log sont organisés en groupe
et sont écrits de façon circulaire.
Nous avons 2 groupes au minimum composés au minimum d’un membre. Lorsque le premier groupe est plein, il y a un SWITCH
(basculement) pour le passage au deuxième groupe. Oracle écrase les données du premier groupe, lorsqu’il a fini son tour circulaire.
C’est le processus LGWR (LOGWRITER) qui écrit dans les redo.
Il existe deux modes de fonctionnement dans Oracle pour la gestion
des fichiers de journalisation.
Le mode NOARCHIVELOG (par défaut)
Pas d’historique de journalisation (les fichiers sont périodiquement écrasés
Le mode ARCHIVELOG
Conserve les fichiers de journalisation dans des archives.
SQL> SELECT group#,
type, member, status
FROM v$logfile;
| GROUP# | TYPE | MEMBER | STATUS |
| 3 | ONLINE | C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO03.LOG | |
| 2 | ONLINE | C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO02.LOG | |
| 1 | ONLINE | C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG |
Status
INVALID = fichier inaccessible
STALE = nouveaux membre incomplet
DELETED = inutilisé, supprimé
NULL = en cours d’utilisation
SQL> SELECT group#,
members,sequence#, bytes, archived, status
FROM v$log ;
| GROUP# | MEMBERS | SEQUENCE# | BYTES | ARCHIVED | STATUS |
| 1 | 1 | 401 | 52428800 | NO | INACTIVE |
| 2 | 1 | 402 | 52428800 | NO | CURRENT |
| 3 | 1 | 400 | 52428800 | NO | INACTIVE |
Status
INACTIVE = groupe inutile pour une restauration
CURRENT = groupe en cours d’écriture
ACTIVE = groupe nécessaire pour une restauration
UNUSED = nouveau groupe vierge
SQL> SELECT * FROM V$LOGHIST;
SQL> SELECT * FROM V$LOG_HISTORY;