Académique Documents
Professionnel Documents
Culture Documents
ARCHIVELOG Detaille PDF
ARCHIVELOG Detaille PDF
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.noip.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.noip.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.noip.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.noip.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.noip.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.noip.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.noip.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.noip.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.noip.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.noip.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.noip.org/articles/print.php?id=158 11/11