Vous êtes sur la page 1sur 11

27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

ARCHIVELOG
 Le mode ARCHIVELOG 

Lorsqu'une base de données Oracle est en mode ARCHIVELOG, les transactions enregistrées dans les REDO LOGS sont archivées dans des fichiers ARCn
(Archivelog) chaque fois que le fichiers REDOLOG en cours est plein. 

Le mode ARCHIVELOG permet une restauration plus sûre de la base de données. 

Savoir si une base de données est en mode ARCHIVELOG 
Code :
connect sys as sysdba  
SQL> ARCHIVE LOG LIST  
mode Database log                               mode No Archive  
Archivage automatique                           Désactivé  
Destination de l'archive                        USE_DB_RECOVERY_FILE_DEST  
Séquence de journal en ligne la plus ancienne   82  
Séquence de journal courante                    84  

Code :
SELECT LOG_MODE FROM SYS.V$DATABASE;  
LOG_MODE  
‐‐‐‐‐‐‐‐‐‐‐‐  
NOARCHIVELOG  

Connaître le volume d'archivelog généré par une instance 
Il est important de monitorer le suivi des archiveLog, afin de détecter des archives trop importantes par rapport à l'activité.  

Code :
SQL> SELECT TO_DATE(TO_CHAR(next_time, 'dd/mm/yyyy'), 'dd/mm/yyyy') Jour, ROUND(SUM(blocks*block_size/1024/1024)) Mo  
  2    FROM v$archived_log  
  3   GROUP BY TO_DATE(TO_CHAR(next_time, 'dd/mm/yyyy'), 'dd/mm/yyyy')  
  4   ORDER BY 1 DESC ;  

JOUR              MO  
http://mahieus.no­ip.org/articles/print.php?id=158 1/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐  
26‐SEP‐06      48226  
25‐SEP‐06      25258  
24‐SEP‐06      20438  
23‐SEP‐06      31261  
22‐SEP‐06      17450  
21‐SEP‐06      18811  
20‐SEP‐06      30778  
19‐SEP‐06      36108  
18‐SEP‐06      90508  
17‐SEP‐06      31568  
16‐SEP‐06      50283  

 Activer le mode ARCHIVELOG d'une base de données 

1ère solution 
Il faut tout d'abord arrêter la base : 
Code :
sql> SHUTDOWN

On ne peut pas modifier le mode ARCHIVELOG en NOARCHIVELOG si la base à besoin d'une restauration media. 

Il faut ensuite sauvegarder la base. En effet, avant de faire des modifications majeures dans la base, il faut toujours la sauvegarder pour se protéger pour des
raisons de sécurité. 

Editer le fichier d'initialisation pour ajouter les paramètres qui spécifient la destination des archives.

Démarrer la base en mode mount sans l'ouvrir :  
Code :
sql> STARTUP MOUNT

Modifier le mode d'archivage et ouvrir la base.  
Code :
sql> ALTER SYSTEM SET LOG_ARCHIVE_DEST='f:\archivelogs\' scope=spfile;  
sql> ALTER DATABASE ARCHIVELOG;   
sql> ALTER DATABASE OPEN;  

http://mahieus.no­ip.org/articles/print.php?id=158 2/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

Le changement du mode d'archivage mettra à jours le fichier de contrôle et rendra les anciennes sauvegardes inutilisables. 

Arrêter la base : 
Code :
sql> SHUTDOWN IMMEDIATE

Sauvegarde la base. En version 10g, il n'est pas nécessaire de renseigner le paramètre d'initialisation : 
Code :
LOG_ARCHIVE_START = TRUE

2ème solution 
Le mode ARCHIVELOG permet, entre autres, la mise en place de backups RMAN à chaud (base ouverte). 
Ce mode peut être activé lors de la création de la base (dbca). 
Dans cet exemple, on prend le cas d'une base créée en mode NOARCHIVELOG qu'on modifie ensuite.
Depuis la version 10, le mode ARCHIVELOG démarre automatiquement 2 processus d'archivage:  

arc0
arc1 

Etapes 
Définir une flash recovery area, si ce n'est pas déjà fait : Définir d'abord la taille et la destination 
On peut définir les paramètres: log_archive_format et log_archive_dest. Ce n'est pas obligatoire. Si ce n'est pas fait, les fichiers archives seront stockés dans la
flash recovery area, dans le répertoire $SID/archivelog. 
Code :
shutdown immediate;  
startup mount;  
alter database archivelog;  
alter database open;  

Afin de voir immédiatement le résultat, on peut faire : 
Code :
alter system switch logfile  

Afin d'archiver le redolog courant et de passer au suivant. 

Définition du chemin où seront stocké les archiveslogs : 
Code :
http://mahieus.no­ip.org/articles/print.php?id=158 3/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

LOG_ARCHIVE_DEST = C:\ORANT\DATABASE\ARCHIVE  
LOG_ARCHIVE_FORMAT = "ORCL%S.ARC" 

Spécifie le format du nom des fichiers archivés. Ici, le fichier commence par le mot "ORCL" plus le numéro de séquence du journal et fini par le mot ".ARC". 

Les autres options sont : 

%s ou %S : le numéro de la séquence en format simple ou à longueur fixe, rempli avec des zéros
%t ou %T : le numéro de l'instance dans le cas d'un environnement Oracle RAC, sinon est 1
%d : l'identifiant de la base de données; il est utilise si le répertoire stocke les archivelogs de plusieurs base de donnés
%r : l'identifiant unique d'un fichier de journaux archivés pour des incarnations multiples de base de données. 

Exemple de manipulation 
Code :
oracle@ne‐eec‐leto:~> source environ_es22_10203EE  
*****************************************  
ORACLE_HOME=/u01/app/oracle/product/10203EE  
ORACLE_SID=es22  
*****************************************  
oracle@ne‐eec‐leto:~> sqlplus "/as sysdba"  

SQL*Plus: Release 10.2.0.3.0 ‐ Production on Lun. Août 20 15:32:49 2007  

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.  

Connecté à :  
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 ‐ Production  
With the Partitioning, OLAP and Data Mining options  

SQL> alter system set db_recovery_file_dest_size = 2G scope=both;  

Système modifié.  

SQL> alter system set db_recovery_file_dest ='/safe/oraflash' scope=both;  

Système modifié.  

SQL> shutdown immediate;  

http://mahieus.no­ip.org/articles/print.php?id=158 4/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

Base de données fermée.  
Base de données démontée.  
Instance ORACLE arrêtée.  

SQL> startup mount;  

Instance ORACLE lancée.  

Total System Global Area  377487360 bytes  
Fixed Size                  1261876 bytes  
Variable Size             301993676 bytes  
Database Buffers           67108864 bytes  
Redo Buffers                7122944 bytes  
Base de données montée.  

SQL> alter database archivelog;  

Base de données modifiée.  

SQL> alter database open;  

Base de données modifiée.  

 Cas d'une base de données en cluster 

Code :
c:\ srvctl stop database ‐d base  
sqlplus / as sysdba  
sql> startup nomount;  
sql> alter system set cluster_database=false scope=spfile;  
sql> shutdown immediate;  
sql> exit  

c:\ sqlplus / as sysdba  
sql> startup mount  
sql> alter database archivelog;  
sql> alter system set cluster_database=true scope=spfile;  

http://mahieus.no­ip.org/articles/print.php?id=158 5/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

sql> shutdown immediate;  
sql> exit  

c:\ srvctl start database ‐d base 

 Purger des archivelog avec RMAN 

Dans le script suivant, nous allons supprimer sur disques les archivelog supérieure à 7 jours. 

Fichier Purge.bat 
Code :
RMAN target sys/mdp@dbtest CMDFILE=F:\Script\purge.txt LOG "F:\Script\log\purge.log"  
EXIT  

Fichier Purge.txt 
Code :
delete noprompt force archivelog until time='sysdate‐7';  

Fichier Purge.log 
Code :
Recovery Manager: Release 10.2.0.1.0 ‐ Production on Fri Sep 10 01:00:00 2010  

Copyright (c) 1982, 2005, Oracle.  All rights reserved.  

connected to target database: DBTEST (DBID=884319214)  

RMAN> delete noprompt force archivelog until time='sysdate‐7';  
using target database control file instead of recovery catalog  
allocated channel: ORA_DISK_1  
channel ORA_DISK_1: sid=304 devtype=DISK  
deleted archive log  
archive log filename=F:\FLASH_RECOVERY_AREA\DBTEST\ARC23220_0688751409.001  
deleted archive log  
archive log filename=F:\FLASH_RECOVERY_AREA\DBTEST\ARC23221_0688751409.001  
deleted archive log  
archive log filename=F:\FLASH_RECOVERY_AREA\DBTEST\ARC23222_0688751409.001  
deleted archive log  

http://mahieus.no­ip.org/articles/print.php?id=158 6/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

archive log filename=F:\FLASH_RECOVERY_AREA\DBTEST\ARC23223_0688751409.001  
deleted archive log  
archive log filename=F:\FLASH_RECOVERY_AREA\DBTEST\ARC23224_0688751409.001  
deleted archive log  
archive log filename=F:\FLASH_RECOVERY_AREA\DBTEST\ARC23225_0688751409.001  
deleted archive log  
archive log filename=F:\FLASH_RECOVERY_AREA\DBTEST\ARC23226_0688751409.001  
Deleted 7 objects  

Recovery Manager complete.  

On peut faire du ménage en passant par la suppression des archivelogs depuis le système d'exploitation ou avec la commande suivante, mais il faut que RMAN
le sache : 

Avant de supprimer des archivelogs : 
Code :
RMAN> delete expired archivelog all;  

Suppression des archivelogs : 
Code :
RMAN> delete force archivelog all;  

En mise à jour RMAN : 
Code :
RMAN> crosscheck archivelog all;  

 Modifier le chemin cible des archivelogs 

On peut modifier le répertoire où seront stockés les archiveslogs, par défaut l'emplacement est défini par le paramètre db_recovery_file_dest. 
Si le paramètre archive_log_dest est défini, il faut supprimer la valeur contenue dans db_recovery_file_dest et redémarrer la base : 
Code :
SQL> alter system reset db_recovery_file_dest scope=spfile;  
SQL> shutdown immediate;  

http://mahieus.no­ip.org/articles/print.php?id=158 7/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

SQL> startup;  

Code :
SQL> show parameter log_archive_dest;  

NAME                                 TYPE        VALUE  
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  
db_recovery_file_dest                string      G:\archivelogs  
db_recovery_file_dest_size           big integer 4G  
SQL>  
SQL> alter system set log_archive_dest_1="LOCATION=g:\archivelogs\test\" scope=spfile;  

Système modifié.  

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

c:\ set oracle_sid=TEST  
c:\ sqlplus / as sysdba  

SQL*Plus: Release 11.2.0.1.0 Production on Mer. Mars 20 21:50:07 2013  

Copyright (c) 1982, 2010, Oracle.  All rights reserved.  

Connecté à une instance inactive. 

SQL> startup  
Instance ORACLE lancée.  

Total System Global Area 1737031680 bytes  
Fixed Size                  2176488 bytes  
Variable Size            1073744408 bytes  
Database Buffers          654311424 bytes  
Redo Buffers                6799360 bytes  
Base de données montée.  

http://mahieus.no­ip.org/articles/print.php?id=158 8/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

Base de données ouverte.  
SQL>  
SQL> show parameter db_recovery_file_dest;  

NAME                                 TYPE        VALUE  
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  
db_recovery_file_dest                string      G:\archivelogs\test\  
db_recovery_file_dest_size           big integer 4G  
SQL>  
Le chemin a bien été modifié.  

 Multiplexage des fichiers ARCHIVELOGS 

On peut multiplexer les fichiers d'archivelogs sur différents emplacements disques. 
Le paramètre à modifier est log_archive_dest_X. 

Code :

SQL> show parameter log_archive_dest_1;  

NAME                                 TYPE        VALUE  
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  
log_archive_dest_1                   string      LOCATION=g:\archivelogs\test\  

SQL>  

Ici un seul emplacement des fichiers archivelogs est défini. 
Pour définir un second emplacement (multiplexage) : 

Code :

SQL> alter system set log_archive_dest_2="LOCATION=h:\archivelogs\test\" scope=spfile;  

Système modifié.  

SQL> shutdown immediate;  

http://mahieus.no­ip.org/articles/print.php?id=158 9/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

Base de données fermée.  
Base de données démontée.  
Instance ORACLE arrêtée.  
SQL>quit  

c:\ set oracle_sid=TEST  
c:\ sqlplus / as sysdba  

SQL*Plus: Release 11.2.0.1.0 Production on Mer. Mars 20 21:50:07 2013  

Copyright (c) 1982, 2010, Oracle.  All rights reserved.  

Connecté à une instance inactive. 

SQL> startup  
Instance ORACLE lancée.  

Total System Global Area 1737031680 bytes  
Fixed Size                  2176488 bytes  
Variable Size            1073744408 bytes  
Database Buffers          654311424 bytes  
Redo Buffers                6799360 bytes  
Base de données montée.  
Base de données ouverte.  
SQL>  
SQL> show parameter log_archive_dest_;  

NAME                                 TYPE        VALUE  
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐  
log_archive_dest_1                   string      LOCATION=g:\archivelogs\test\  
log_archive_dest_10                  string  
log_archive_dest_11                  string  
log_archive_dest_12                  string  
log_archive_dest_13                  string  
log_archive_dest_14                  string  
log_archive_dest_15                  string  
log_archive_dest_16                  string  
log_archive_dest_17                  string  
log_archive_dest_18                  string  

http://mahieus.no­ip.org/articles/print.php?id=158 10/11
27/04/2017 ARCHIVELOG ­ Sébastien Mahieu

log_archive_dest_19                  string  
log_archive_dest_2                   string      LOCATION=h:\archivelogs\test\  

SQL> alter system switch logfile; 

Système modifié.  

SQL>  

Les fichiers archivelogs sont donc présents sur les 2 emplacements définis plus haut. 
Cela permet d'avoir une sécurité supplémentaire sur l'archivage des fichiers d'une base de production. 
Très souvent les autres emplacements d'archivelog multiplexés sont sur des sites distants. C'est une des première chose à faire pour la mise en place d'une base
de secours (DATAGUARD). On peut toujours rejouer les archiveslogs dans une base en standby ou une base répliquée. 

log_archive_dest_X sont utilisés pour plus de 2 emplacements différents. A défaut il est préférable d'utiliser log_archive_dest et log_archive_duplex_dest

http://mahieus.no­ip.org/articles/print.php?id=158 11/11

Vous aimerez peut-être aussi