Redimensionner les redo logs

code php

Je ne sais pas s’il existe vraiement un niveau 0 de l’exploitation des SGBD oracle, mais le redimensionnement, à la hausse, des fichiers de tablespaces est du niveau le plus trivial qui soit. Cependant, à peine plus compliqué, il est parfois nécessaire de redimensionner les redo logs, ou plus précisément les “archived red log files”. C’est pourtant parfois nécessaire quand par exemple on constate un nombre de switch trop élevé. Il est recommandé d’en avoir 3 à 4 par heures et on les comptes soit en mode texte avec SQL*Plus soit de manière plus graphique avec l’outil qui vous semblera bon.

Les redo-logs ne peuvent être redimensionnés directement, la méthode à suivre est la suivante: Créer de nouveaux redo-logs de la taille désirée, pousser oracle à écrire dans ces nouveaux fichiers, supprimer les ancien fichiers redo-logs.

Lister les fichiers redo-logs

select distinct THREAD#||'.'||g.GROUP# "Th_Gr_Seq"
     , bytes /1024/1024/1024 Go
     , f.status
     , FIRST_CHANGE#
     , FIRST_TIME
     , NEXT_CHANGE#
     , NEXT_TIME
     , ARCHIVED
     , IS_RECOVERY_DEST_FILE "REC"
     , MEMBER
  from gv$logfile f join gv$log g on g.group# = f.group#
 order by 1

On obtient alors ce type de résultats, après mise en forme :

Group   Giga Bytes STATUS  FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME           ARC REC File
------ ----------- ------- ------------- ------------------- ------------ ------------------- --- --- -----------------------------
1.1           0.24              23501680 2019/07/08 22:02:18   2.8147E+14                     NO  NO  /oracle/redo/redog1m1.rdo
1.1           0.24              23501680 2019/07/08 22:02:18   2.8147E+14                     NO  NO  /oracle/redo/redog1m2.rdo
1.2           0.24              22922686 2019/07/05 05:51:13     23066089 2019/07/06 05:46:08 NO  NO  /oracle/redo/redog2m1.rdo
1.2           0.24              22922686 2019/07/05 05:51:13     23066089 2019/07/06 05:46:08 NO  NO  /oracle/redo/redog2m2.rdo
1.3           0.24              23066089 2019/07/06 05:46:08     23192089 2019/07/07 05:04:36 NO  NO  /oracle/redo/redog3m1.rdo
1.3           0.24              23066089 2019/07/06 05:46:08     23192089 2019/07/07 05:04:36 NO  NO  /oracle/redo/redog3m2.rdo

On a, pour le thread 1, 3 groupes de redo logs dont chacun contient deux membres d’une taille de 240 Mo environ.

Si on souhaite les agrandir on va utiliser ce tpe d’instruction

alter database add logfile group 11 ('/oracle/redo/redog11m1.rdo', '/oracle/redo/redog11m2.rdo') size 1G ;
alter database add logfile group 12 ('/oracle/redo/redog12m1.rdo', '/oracle/redo/redog12m2.rdo') size 1G ;
alter database add logfile group 13 ('/oracle/redo/redog12m1.rdo', '/oracle/redo/redog13m2.rdo') size 1G ;

Il faut ensuite encourager oracle à utiliser ces nouveaux fichiers. Il faut savoir qu’oracle, s’il dispose de fichiers de redo qu’il n’a pas encore eu l’occasion d’utiliser, va le utiliser en priorité.

L’instruction suivant va donc pousser oracle à écrire se logs dans les nouveaux fichiers :

alter system switch logfile ;

Il faut aussi rendre les anciens fichiers obsolètes. En effet les fichier de redo peuvent être encore nécessaire au rollback/rollforward en cas de crash inopiné de la machine. On va donc forcer un checkpoint de manière à ce que leur contenu soit flushé sur disque.

alter system checkpoint ;

A partir de là on peut supprimer les anciens fichers de logs sans problème.

alter database drop logfile group 1 ;
alter database drop logfile group 2 ;
alter database drop logfile group 3 ;

Voila qui est fait. nous avons pu redimensionner les redo logs, à priori sans erreur.