Modifier le mode de journalisation archivée Oracle, le chemin d’archivage et la taille de l’espace

Faut-il activer l’archivage des journaux lors de la création d’une base de données Oracle ? Une base de données Oracle peut fonctionner en deux modes : le mode archivage (ARCHIVELOG) et le mode non archivage (NOARCHIVELOG). Le mode archivage améliore la capacité de récupération de la base de données Oracle. Toutes les bases de données de production doivent fonctionner dans ce mode, et le mode archivage doit être combiné à une stratégie de sauvegarde adaptée. Un mode archivage sans stratégie de sauvegarde correspondante ne fera qu’engendrer des problèmes…

Téléchargement gratuit
pour VM, OS, base de données, fichiers, NAS, etc.
eleonore

Updated by Eleonore on 2026/06/25

Faut-il activer l’archivage des journaux lors de la création d’une base de données ORACLE ?

La base de données Oracle peut fonctionner en deux modes : le mode archivage (archivelog) et le mode non archivage (noarchivelog).

Le mode archive peut améliorer la capacité de restauration de la base de données Oracle.

Toutes les bases de données de production doivent fonctionner dans ce mode, et le mode archivage doit être associé à une stratégie de sauvegarde correspondante. Le simple fait d’activer le mode archivage sans stratégie de sauvegarde adaptée ne fera qu’engendrer des problèmes.

Par défaut, la base de données Oracle est créée en mode sans journalisation.

Dans le mode de journalisation sans archivage, le journal redo sera réécrit directement lors de la commutation du journal. Si le fichier de données est endommagé en raison d’une panne matérielle à ce moment-là, les données réécrites seront perdues lors de la restauration de la base de données ;

Dans le mode journal d’archives, la base de données peut utiliser tous les fichiers journaux d’archives générés depuis la sauvegarde la plus récente de la base de données afin de garantir qu’aucune donnée ne soit perdue ; la plupart des bases de données de production fonctionnent en mode archivelog.

Une fois que la base de données Oracle a activé le mode journalisation archivée, elle démarre automatiquement un nouveau processus : l’archivage ARCn. Par défaut, 4 processus sont lancés. Dans les applications réelles, jusqu’à 30 processus d’archivage peuvent être démarrés.

[oracle@dbserver1 archivelog]$ ps -ef | grep -i ora_oracle   26567     1  0 08:48 ?        00:00:00 ora_arc0_orcloracle   26573     1  0 08:48 ?        00:00:00 ora_arc1_orcloracle   26575     1  0 08:48 ?        00:00:00 ora_arc2_orcloracle   26577     1  0 08:48 ?        00:00:00 ora_arc3_orcl

Un journal d’archivage (archive log) est une copie de sauvegarde d’un journal redo inactif. Grâce aux journaux d’archivage, l’intégralité de l’historique des enregistrements redo peut être conservée. Lorsque la base de données fonctionne en mode ARCHIVELOG et qu’un basculement de journal intervient,

Le processus en arrière-plan ARCH enregistrera le contenu du journal de restauration dans le journal d’archivage. En cas de défaillance matérielle de la base de données, la sauvegarde des fichiers de données, le journal d’archivage et le journal de restauration peuvent être utilisés pour restaurer entièrement la base de données.

#########################

Passage du mode non-archivage au mode archivage

Avant la modification :

Confirmez l’environnement. Vérifiez la base de données pour savoir si l’archivage est activé : --- Les informations indiquées ci-dessous supposent que, lors de l’installation de la base de données, vous n’avez pas choisi d’activer la fonctionnalité « flashback », et que vous n’avez pas non plus choisi d’activer l’archivage.

Modifier l’archive Oracle – 1
SQL> archive log list
Mode de journalisation de la base de données : Aucun mode d’archivage
Archivage automatique : Désactivé
Destination de l’archivage : /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Numéro de séquence du journal en ligne le plus ancien : 4
Numéro de séquence du journal actuel : 6

SQL> SELECT name, log_mode FROM v$database;
NAME      LOG_MODE
–------- ------------
ORCL      NOARCHIVELOG

SQL>  show parameter db_recovery
NOM                         TYPE     VALEUR
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             chaîne
db_recovery_file_dest_size         entier volumineux 0

Modifier l’archive Oracle - 1

######### Cette procédure teste le passage de la base de données du mode non-archivage au mode archivage lorsque la fonctionnalité Flashback n’est pas activée ############

Modifier l’archive Oracle - 1
SQL> shutdown immédiat   Base de données fermée.

SQL> startup mount
Instance ORACLE démarrée.

SQL> modifier la base de données en mode archivelog ;
Base de données modifiée.

SQL> alter database open ;
Base de données modifiée.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Numéro de séquence le plus ancien du journal en ligne : 4
Numéro de séquence du prochain journal à archiver : 6
Numéro de séquence du journal actuel : 6

SQL> SELECT name FROM v$archived_log ;
aucune ligne sélectionnée

SQL> modifier le système pour archiver le journal actuel ;
Système modifié.

SQL> SELECT name FROM v$archived_log ;
NAME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf

SQL>  show parameter recover;
NOM                             TYPE     VALEUR
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             chaîne
db_recovery_file_dest_size         entier volumineux 0
db_unrecoverable_scn_tracking     booléen     TRUE
recovery_parallelism             entier     0

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
aucune ligne sélectionnée

Modifier l’archive Oracle - 1

Lorsque log_archive_log est défini sur sa valeur par défaut, le répertoire d’archivage devient ?/dbs/arch.

Modifier l’archive Oracle – 1
SQL> alter system set log_archive_dest_1='';Système modifié.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : ?/dbs/arch
Numéro de séquence du journal en ligne le plus ancien : 5
Numéro de séquence du journal à archiver ensuite : 7
Numéro de séquence du journal actuel : 7

SQL> shutdown immediate
Base de données fermée.
Base de données désassemblée.
Instance ORACLE arrêtée.

SQL> startup mount
Instance ORACLE démarrée.

Modifier l’archive Oracle - 1

Après le redémarrage de la base de données en mode montage, le répertoire d’archivage revient automatiquement au répertoire par défaut d’origine.

Modifier l’archive Oracle - 1
SQL> archive log listMode de journalisation de la base de données           Mode archiveArchivage automatique           ActivéEmplacement de l’archive           /home/oracle/u01/app/oracle/product/11.2.2.0/dbhome_1/dbs/archOldest séquence de journal en ligne la plus ancienne : 5
Prochaine séquence de journal à archiver : 7
Séquence de journal actuelle : 7
--- Définir le nombre maximal de processus ouverts pour l’archivage
SQL> alter system set log_archive_max_processes = 5;
Système modifié.--- Modifier le format de stockage des journaux SQL > alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile; Système modifié.SQL> shutdown immediate
Base de données désassemblée.
Instance ORACLE arrêtée.

SQL> startup
Instance ORACLE démarrée.

SQL > arrêt immédiat
Base de données désassemblée.

Zone globale totale du système : 939495424 octets
Taille fixe : 2258840 octets
Taille variable : 637536360 octets
Tampons de base de données : 293601280 octets
Tampons redo : 6098944 octets
Base de données montée.
Base de données ouverte.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Numéro de séquence le plus ancien des journaux en ligne : 5
Numéro de séquence du prochain journal à archiver : 7
Numéro de séquence du journal actuel : 7

SQL>  show parameter db_recovery
NOM                         TYPE     VALEUR
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             chaîne
db_recovery_file_dest_size         entier volumineux 0

SQL> select name from v$archived_log;
NOM
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf

SQL> alter system switch logfile ;
Système modifié.

SQL> SELECT recid, nom, first_time FROM v$archived_log ;

NOM
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/archarchive_1_7_94709105
4.log

SQL> SELECT NOM, LIMITE_ESPACE/1024/1024/1024, ESPACE_UTILISE/1024/1024/1024, NOMBRE_DE_FICHIERS FROM V$RECOVERY_FILE_DEST;

Aucune ligne sélectionnée

SQL> SELECT flashback_on FROM v$database ;
FLASHBACK_ON
–----------------
NON

Modifier l’archive Oracle - 1

#############################

Activer la fonctionnalité Flashback de la base de données. Définir le chemin et la taille de la zone de récupération flash à des fins de test. Désactiver d’abord le mode archivage, puis activer le chemin par défaut après l’archivage, qui correspond au chemin de flashback de la base de données.

Vérifiez la base de données pour déterminer si la fonctionnalité de retour arrière doit être activée.


Remarque : Si vous activez la fonction de retour dans le temps (flashback), vous devez être en mode archivage, sinon il est impossible d’effectuer un retour dans le temps ! ! ! !

Toutefois, si vous ouvrez l’archive, vous n’êtes pas obligé d’activer la fonction de retour dans le temps ! ! !

Si la fonctionnalité de retour arrière (flashback) est activée, puis le mode d’archivage est activé, les journaux d’archivage sont enregistrés par défaut dans la zone de retour arrière de la base de données, à moins qu’un nouveau chemin ne soit explicitement spécifié pour ces journaux. Ils apparaissent alors sous la forme « USE_DB_RECOVERY_FILE_DEST », ce qui correspond en réalité au chemin de la zone de retour arrière.

En outre, l’emplacement et la taille de la zone de restauration et du chemin d’archivage peuvent être définis manuellement.

Modifier l’archive Oracle – 1
SQL> select flashback_on from v$database;FLASHBACK_ON------------------NON SQL> shutdown immediateSQL> startup mount

SQL> alter database flashback on ;   Lors de l’installation de la base de données, je n’ai pas choisi d’activer la fonctionnalité Flashback, et l’erreur suivante est survenue

ALTER DATABASE FLASHBACK ON
*
ERREUR à la ligne 1 :
ORA-38706 : Impossible d’activer la journalisation FLASHBACK DATABASE.
ORA-38709 : La zone de récupération n’est pas activée.

Modifier l’archive Oracle - 1

Configurer la zone de récupération flash :

Définir la taille de la zone de récupération flash : la zone de récupération flash par défaut d’Oracle est de 2 Go

SQL>  alter system set db_recovery_file_dest_size=5g scope=spfile;

Afficher la taille de l’espace du chemin spécifié dans la zone de restauration :

SQL> show parameter db_recovery_file_dest_size

NOM                             TYPE      VALEUR
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest_size         entier volumineux 30G

Définir l’emplacement de la zone de restauration :

SQL> alter system set db_recovery_file_dest='/home/oracle/u01/app/oracle/account_flashback_area' scope=spfile;

Définir la durée cible de restauration à 5 jours (en minutes ; la valeur par défaut d’Oracle est de 1440 minutes, soit un jour)

SQL> alter system set db_flashback_retention_target=7200 scope=spfile;

Créez les répertoires liés à la fonctionnalité Flashback au niveau du système d’exploitation :

Modifier l’archive Oracle - 1
[oracle@dbserver oracle]$ mkdir -p /home/oracle/u01/app/oracle/account_flashback_area

SQL> ALTER DATABASE FLASHBACK ON ;
Base de données modifiée.
SQL> ALTER DATABASE OPEN ;
Base de données modifiée.

SQL> SELECT flashback_on FROM v$database ;
FLASHBACK_ON
–----------------
OUI

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : USE_DB_RECOVERY_FILE_DEST
Numéro de séquence du plus ancien journal en ligne : 6
Numéro de séquence du prochain journal à archiver : 8
Numéro de séquence du journal actuel : 8

Modifier l’archive Oracle - 1

Conclusion : Si la fonctionnalité Flashback est activée et que le mode archivage est réactivé, et qu’aucun nouveau chemin n’est spécifié pour les journaux d’archivage, ces derniers sont enregistrés par défaut dans la zone de récupération Flashback de la base de données, avec l’indication « USE_DB_RECOVERY_FILE_DEST », ce qui correspond en réalité au chemin de la zone Flashback.

Actuellement, nous allons tester la désactivation de la fonction de retour arrière (flashback) puis redémarrer la base de données afin de consulter le chemin des journaux d’archivage.

Modifier l’archive Oracle – 1
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE

SQL> shutdown immediate
Base de données fermée.

SQL> startup mount
Instance ORACLE démarrée.

Modifier l’archive Oracle - 1

Fermer le mode archivage — vous rappelle que la base de données fonctionne en mode archivage. Lorsque la fonctionnalité de retour arrière (flashback) est activée, le mode archivage ne peut pas être désactivé directement.

SQL> alter database noarchivelog ;alter database noarchivelog*ERREUR à la ligne 1 :ORA-38774 : impossible de désactiver la reprise sur support - la fonctionnalité Flashback Database est activée

Ensuite, nous désactivons d’abord la fonctionnalité Flashback.

Modifier l’archive Oracle – 1
SQL> ALTER DATABASE FLASHBACK OFF; Base de données modifiée.

SQL> ALTER DATABASE NOARCHIVELOG;
Base de données modifiée.

SQL> ALTER DATABASE OPEN ;
Base de données modifiée.

SQL> archive log list
Mode de journalisation de la base de données : Mode sans archivage
Archivage automatique : Désactivé
Emplacement d’archivage : USE_DB_RECOVERY_FILE_DEST
Numéro de séquence du journal en ligne le plus ancien : 6
Numéro de séquence du journal en ligne actuel : 8

SQL> SELECT flashback_on FROM v$database ;
FLASHBACK_ON
–----------------
NON

Modifier l’archive Oracle - 1

Redémarrer, ouvrir la vue des archives et afficher le chemin de l’archive

Modifier l’archivage Oracle – 1
SQL> shutdown immediate
Base de données fermée.
SQL> startup mount
Instance ORACLE démarrée.
SQL> alter database archivelog;
Base de données modifiée.
SQL> alter database open;
Base de données modifiée.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Emplacement d’archivage : USE_DB_RECOVERY_FILE_DEST
Numéro de séquence du journal en ligne le plus ancien : 6
Numéro de séquence du prochain journal à archiver : 8
Numéro de séquence du journal actuel : 8

SQL> SELECT flashback_on, open_mode FROM v$database ;
FLASHBACK_ON       OPEN_MODE
–---------------- --------------------
NON           LECTURE-ÉCRITURE

Modifier l’archive Oracle - 1

Conclusion : Si vous ouvrez l’archive, il n’est pas nécessaire d’activer la fonction de retour dans le temps ; vous n’avez pas besoin d’activer le retour dans le temps ! ! !

Test 3 : Modifier le chemin d’archivage par défaut

Modifier l’archive Oracle - 1
SQL> shutdown immediate
SQL> startup mount
Instance ORACLE démarrée.

SQL> archive log list
Mode de journalisation de la base de données : Mode archive
Archivage automatique : Activé
Emplacement de l’archive : USE_DB_RECOVERY_FILE_DEST
Numéro de séquence du journal en ligne le plus ancien : 6
Numéro de séquence du prochain journal à archiver : 8
Numéro de séquence du journal actuel : 8

SQL> alter system set log_archive_dest_1=‘location=/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch’;
Système modifié.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Numéro de séquence du journal en ligne le plus ancien : 6
Numéro de séquence du journal suivant à archiver : 8
Numéro de séquence du journal actuel : 8

SQL> SELECT flashback_on, open_mode FROM v$database ;

REVOIR_ACTIF       MODE_OUVERTURE
–---------------- --------------------
NON           MONTÉ

Test 4 : Nous fermons l’archive, activons d’abord la fonction flashback, puis activons l’archive, démarrons la base de données, vérifions le chemin de l’archive et déterminons si le chemin personnalisé est utilisé ; nous le modifions ensuite pour qu’il corresponde au chemin par défaut de la fonction flashback.

 SQL> modifier la base de données en mode noarchivelog ; Base de données modifiée.

SQL> archive log list
Mode de journalisation de la base de données : Mode sans archivage
Archivage automatique : Désactivé
Emplacement de l’archivage : /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Numéro de séquence le plus ancien des journaux en ligne : 6
Numéro de séquence actuel du journal : 8

SQL> alter database flashback on ;   –– La fonction Flashback ne peut pas être activée en mode non-archivage

ALTER DATABASE FLASHBACK ON
*
ERREUR à la ligne 1 :
ORA-38706 : Impossible d’activer la journalisation FLASHBACK DATABASE.
ORA-38707 : La reprise après sinistre (media recovery) n’est pas activée.

Conclusion : La fonction Flashback ne peut pas être activée en mode non-archivage

################################################

SQL> ALTER DATABASE ARCHIVELOG ;Base de données modifiée.

SQL> ARCHIVE LOG LIST
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Emplacement de l’archivage : /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Numéro de séquence du journal en ligne le plus ancien : 6
Numéro de séquence du prochain journal à archiver : 8
Numéro de séquence du journal actuel : 8
SQL>
SQL> ALTER DATABASE FLASHBACK ON ;
Base de données modifiée.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Répertoire d’archivage : /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Numéro de séquence le plus ancien du journal en ligne : 6
Numéro de séquence du journal suivant à archiver : 8
Numéro de séquence du journal actuel : 8

Conclusion : Si un chemin de stockage est spécifié pour les journaux d’archives, alors, lorsque la fonctionnalité Flashback est activée, le chemin de stockage des journaux d’archives reste celui initialement défini par l’utilisateur
#############################
Suite :
Modifiez les journaux d’archives afin qu’ils utilisent le chemin de stockage par défaut de la base de données. Répétez l’opération ci-dessus pour confirmer si le chemin des journaux d’archives correspond bien au chemin de la zone Flashback.

SQL> shutdown immediate
Base de données fermée.
SQL> startup mount
Instance ORACLE démarrée.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Numéro de séquence du journal en ligne le plus ancien : 6
Numéro de séquence du prochain journal à archiver : 8
Numéro de séquence du journal actuel : 8

SQL> alter system set log_archive_dest_1=’’;  –-Modifier le journal d’archivage afin qu’il serve de chemin de stockage par défaut pour la base de données

Système modifié.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : ?/dbs/arch
Numéro de séquence du journal en ligne le plus ancien : 6
Numéro de séquence du journal suivant à archiver : 8
Numéro de séquence du journal actuel : 8

SQL> alter database open ;
Base de données modifiée.

SQL> archive log list
Mode d’enregistrement de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : ?/dbs/arch
Numéro de séquence du journal en ligne le plus ancien : 6
Numéro de séquence du journal suivant à archiver : 8
Numéro de séquence du journal actuel : 8

SQL> SELECT flashback_on, open_mode FROM v$database ;
FLASHBACK_ON       OPEN_MODE
–---------------- --------------------
OUI           LECTURE/ÉCRITURE

SQL> shutdown immediate
Base de données fermée.

SQL> startup
Instance ORACLE démarrée.

SQL> archive log list
Mode de journalisation de la base de données : Mode archivage
Archivage automatique : Activé
Destination d’archivage : USE_DB_RECOVERY_FILE_DEST
Numéro de séquence le plus ancien des journaux en ligne : 6
Numéro de séquence du prochain journal à archiver : 8
Numéro de séquence du journal actuel : 8

Conclusion : Le journal d’archivage constitue le chemin de stockage par défaut de la base de données. Lorsque la fonction de restauration temporelle est activée, passez au mode archivage. Par défaut, le chemin du journal d’archivage correspond au chemin de la zone de restauration temporelle.

Partager sur :

Categories: Database Tips