Les fichiers redo logs permettent à la base de garder une
trace de toutes les altérations de données, ainsi en cas de crash de la
base, ils permettent de rejouer les modifications apportées à la base.
Ces fichiers doivent être au moins au nombre de deux et nécessitent une
attention toute particulière tant au niveau de la sauvegarde que de
l'optimisation des accès.
En mode ARCHIVELOG, les redo logs sont archivés afin de garder une trace de toutes les modifications apportées et non pas seulement dans la limite de la taille des fichiers de redo log.
Les fichiers de redo log écrivent sur le disque le contenu de la mémoire lorsque le redo log buffer est plein. Il parait alors évident que la taille des fichiers de redo log doivent être au moins égale à celle du redo log buffer (paramètre log_buffer). Il n'y a pas vraiment de règles pour déterminer la taille adéquate des fichiers de redo.
Néanmoins il convient de garder en tête que plus le fichier est gros, moins vite il sera archivé et inversement, plus il est petit plus vite il sera archivé. Le nombre d'archives générées doit être environ de deux par heure (du moins, c'est cette règle que j'applique ), effectivement il faut limiter le nombre d'archives écrites puisque les accés disques sont couteux en performance. De plus, les fichiers doivent être, dans la mesure du possible, partagés entre plusieurs disques afin d'améliorer les temps d'accès et augmenter la sécurité, et surtout, sur un disque différent de la base de données.
Ainsi, si les disques de la base de données sont altérés et que les redo logs sont dessus, ils seront eux aussi altérés, rendant impossible la restauration de la base.
Voici quelques requêtes relatives aux redo logs:
Pour voir l'état des archives logs :
Pour voir les informations sur les groupes de redo log :
Pour voir des informations sur les groupes et les membres :
Le status redo logs peut-être : UNUSED : jamais écrit CURRENT : en ligne et en cours d'écriture ACTIVE : en ligne et en cours d'archivage INACTIVE : en ligne, archivé et non utilisé Pour voir des informations sur les fichiers de redo :
Pour forcer le switch de groupe de redo log :
Cette commande permet d'archiver le redo log courant et d'activer le redo log suivant.
Cette commande permet d'archiver le redo log courant.
Pour ajouter un groupe de fichier de redo log :
Pour supprimer un groupe de fichier de redo log :
Pour supprimer un membre d'un fichier redo log ONLINE :
Pour déplacer le fichier de redo log ONLINE :
Ici nous allons illustrer comment utiliser les commandes précédentes. Imaginons le scénario suivant : nous avons deux groupes de fichiers (le groupe 1 et le 2) avec chacun deux fichiers de redo logs.
Penser à supprimer le fichier g:\oracle\oradata\orafrance\REDO05.LOG rendu inutile.
En mode ARCHIVELOG, les redo logs sont archivés afin de garder une trace de toutes les modifications apportées et non pas seulement dans la limite de la taille des fichiers de redo log.
Les fichiers de redo log écrivent sur le disque le contenu de la mémoire lorsque le redo log buffer est plein. Il parait alors évident que la taille des fichiers de redo log doivent être au moins égale à celle du redo log buffer (paramètre log_buffer). Il n'y a pas vraiment de règles pour déterminer la taille adéquate des fichiers de redo.
Néanmoins il convient de garder en tête que plus le fichier est gros, moins vite il sera archivé et inversement, plus il est petit plus vite il sera archivé. Le nombre d'archives générées doit être environ de deux par heure (du moins, c'est cette règle que j'applique ), effectivement il faut limiter le nombre d'archives écrites puisque les accés disques sont couteux en performance. De plus, les fichiers doivent être, dans la mesure du possible, partagés entre plusieurs disques afin d'améliorer les temps d'accès et augmenter la sécurité, et surtout, sur un disque différent de la base de données.
Ainsi, si les disques de la base de données sont altérés et que les redo logs sont dessus, ils seront eux aussi altérés, rendant impossible la restauration de la base.
Voici quelques requêtes relatives aux redo logs:
Pour voir l'état des archives logs :
Sélectionnez
ARCHIVE LOG
LIST;
SELECT
name
, log_mode FROM
v$database
;
SELECT
archiver FROM
v$instance;
Sélectionnez
SELECT
groups, current_group#, sequence# FROM
v$thread;
Sélectionnez
SELECT
group
#, sequence#, bytes, members, status FROM
v$log
;
Sélectionnez
SELECT
*
FROM
v$logfile;
Sélectionnez
ALTER
SYSTEM SWITCH LOGFILE;
Sélectionnez
ALTER
SYSTEM CHECKPOINT;
Pour ajouter un groupe de fichier de redo log :
Sélectionnez
ALTER
DATABASE
ADD
LOGFILE GROUP
2
'
g:\oracle\oradata\orafrance\REDO03.LOG
'
size 10M;
ALTER
DATABASE
ADD
LOGFILE GROUP
2
'
g:\oracle\oradata\orafrance\REDO04.LOG
'
size 10M;
Sélectionnez
ALTER
DATABASE
DROP
LOGFILE GROUP
2
;
Sélectionnez
ALTER
DATABASE
DROP
LOGFILE MEMBER '
g:\oracle\oradata\orafrance\REDO02.LOG
'
;
Ici nous allons illustrer comment utiliser les commandes précédentes. Imaginons le scénario suivant : nous avons deux groupes de fichiers (le groupe 1 et le 2) avec chacun deux fichiers de redo logs.
Sélectionnez
SELECT
group
#, status FROM
v$log
;
GROUP
# STATUS
--
--------
----------------
1
INACTIVE
1
ACTIVE
2
CURRENT
2
INACTIVE
- Créer un fichier de redo temporaire de la taille des redo logs : Sélectionnez
ALTER
DATABASE
ADD
LOGFILEGROUP
3
'
g:\oracle\oradata\orafrance\REDO05.LOG
'
size 10M; - Positionner le redo courrant sur ce nouveau fichier :Sélectionnez
ALTER
SYSTEM SWITCH LOGFILE;ALTER
SYSTEM SWITCH LOGFILE;SELECT
group
#, statusFROM
v$log
;GROUP
# STATUS--
--------
----------------
1
INACTIVE1
INACTIVE2
INACTIVE2
ACTIVE3
CURRENT
- Supprimer les fichiers de redo logs et les recréer dans le nouveau répertoire : Sélectionnez
ALTER
DATABASE
DROP
LOGFILE MEMBER'
g:\oracle\oradata\orafrance\REDO01.LOG
'
;ALTER
DATABASE
ADD
LOGFILEGROUP
1
'
g:\oracle\oradata\orafrance\redo\REDO01.LOG
'
size 10M;ALTER
DATABASE
DROP
LOGFILE MEMBER'
g:\oracle\oradata\orafrance\REDO02.LOG
'
;ALTER
DATABASE
ADD
LOGFILEGROUP
1
'
g:\oracle\oradata\orafrance\redo\REDO02.LOG
'
size 10M;ALTER
DATABASE
DROP
LOGFILE MEMBER'
g:\oracle\oradata\orafrance\REDO01.LOG
'
;ALTER
DATABASE
ADD
LOGFILEGROUP
2
'
g:\oracle\oradata\orafrance\redo\REDO03.LOG
'
size 10M;ALTER
DATABASE
DROP
LOGFILE MEMBER'
g:\oracle\oradata\orafrance\REDO02.LOG
'
;ALTER
DATABASE
ADD
LOGFILEGROUP
2
'
g:\oracle\oradata\orafrance\redo\REDO04.LOG
'
size 10M;SELECT
group
#, statusFROM
v$log
;GROUP
# STATUS--
--------
----------------
1
UNUSED1
UNUSED2
UNUSED2
UNUSED3
CURRENT
- Penser à supprimer les fichiers g:\oracle\oradata\orafrance\REDOxx.LOG rendus inutiles.
- Activer tous les groupes et supprimer le redo log temporaire :
Sélectionnez
ALTER
SYSTEM SWITCH LOGFILE;
ALTER
SYSTEM SWITCH LOGFILE;
ALTER
SYSTEM SWITCH LOGFILE;
ALTER
SYSTEM SWITCH LOGFILE;
SELECT
group
#, status FROM
v$log
;
GROUP
# STATUS
--
--------
----------------
1
INACTIVE
1
INACTIVE
2
INACTIVE
2
CURRENT
3
INACTIVE
ALTER
DATABASE
DROP
LOGFILE GROUP
3
;
SELECT
group
#, status FROM
v$log
;
GROUP
# STATUS
--
--------
----------------
1
INACTIVE
1
INACTIVE
2
INACTIVE
2
CURRENT
0 Commentaires