Overblog Suivre ce blog
Administration Créer mon blog
21 juillet 2011 4 21 /07 /juillet /2011 23:36

 

ORA-19809: limit exceeded for recovery files tips.

Pourquoi ma base Oracle ne démarre pas. ?

Le paramètre DB_RECOVERY_FILE_DEST_SIZE a atteint son maximum ou alors il n'y a plus assez de place sur le disque et vous êtes en mode ARCHIVELOG.

 

Solution à la limite de dépassement.

 
 ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=XXG SCOPE=BOTH; 

 

Comment démarrer ma base Oracle sans l'erreur ORA-19809.

 
 C:\>SET ORACLE_SID=dbtest C:\>SQLPLUS / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Mer. Juil. 20 23:19:34 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connecté à une instance inactive. SQL> STARTUP Instance ORACLE lancée. Total System Global Area 314572800 bytes Fixed Size 1248768 bytes Variable Size 92275200 bytes Database Buffers 218103808 bytes Redo Buffers 2945024 bytes Base de données montée. ORA-16038: le journal 1 séquence 2199 ne peut pas être archivé ORA-19809: limite dépassée pour les fichiers de récupération ORA-00312: journal en ligne 1 thread 1 : 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG' SQL> 

 

SHOW PARAMETER DB_RECOVERY.

 
 SQL> SHOW PARAMETER DB_RECOVERY NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string C:\oracle\product\10.2.0\db_1/ flash_recovery_area db_recovery_file_dest_size big integer 2G SQL> 

 

ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE.

 
 SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=3G SCOPE=BOTH; Système modifié. 

 

REDÉMARRAGE DE LA BASE.

 
 SQL> SHUTDOWN IMMEDIATE ORA-01109: base de données non ouverte Base de données démontée. Instance ORACLE arrêtée. SQL> STARTUP Instance ORACLE lancée. Total System Global Area 314572800 bytes Fixed Size 1248768 bytes Variable Size 92275200 bytes Database Buffers 218103808 bytes Redo Buffers 2945024 bytes Base de données montée. Base de données ouverte. 

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Réparer Corruption de REDOLOG FILE avec CLEAR LOGFILE
• Activer Mode ARCHIVELOG

• Delete Archivelog Oracle avec RMAN
• Augmenter Changer Taille des membres Redolog-Logfiles
• Deplacer Renommer des membres Redolog-Logfiles
• ALTER SYSTEM SWITCH LOGFILE
Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
5 juin 2011 7 05 /06 /juin /2011 20:48

 

Comment réparer la perte d'un groupe REDO LOG FILE.

ORA-00313: open failed for members of log group

Un REDOLOG FILE peut être endommagé et mettre fin aux activités de base de données car l'archivage ne peut pas continuer.
Dans cette situation, l'instruction ALTER DATABASE CLEAR LOGFILE ou ALTER DATABASE CLEAR UNARCHIVED LOGFILE peuvent être utilisé pour réinitialiser le fichier sans fermer la base de données.

Perte REDOLOG FILE et réparation avec ALTER DATABASE CLEAR LOGFILE

 
 SQL> SQL> startup ORACLE instance started. Total System Global Area 293601280 bytes Fixed Size 1248624 bytes Variable Size 75498128 bytes Database Buffers 213909504 bytes Redo Buffers 2945024 bytes Database mounted. ORA-00313: open failed for members of log group 2 of thread 1 ORA-00312: online log 2 thread 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO02.LOG' SQL> alter database clear logfile group 2; Database altered. SQL> alter database open; Database altered. SQL> SQL> 

 

A cet instant la base de données est ouverte.

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Augmenter Changer Taille des membres Redolog-Logfiles
• Deplacer Renommer des membres Redolog-Logfiles
• ALTER SYSTEM SWITCH LOGFILE
Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
3 juin 2011 5 03 /06 /juin /2011 22:37

 

Archivage Fichiers Journalisation: Passer une base Oracle en mode ARCHIVELOG.

Comment configurer une base Oracle en mode ARCHIVELOG ?.

Activer l'archivage des fichiers de journalisation s'effectue en mettant la base de données Oracle en mode ARCHIVELOG. Cela garantit que les groupes de fichiers de journalisation ne seront pas écrasés tant qu'il n'auront pas été archivé.

Voici les étapes nécessaire pour sa mise en place.

Configuration de la taille de la zone de recouvrement.

 

SQL> alter system set db_recovery_file_dest_size=30G SCOPE=BOTH;

 

Configuration de la Cible de la zone de recouvrement.

 

SQL> alter system set db_recovery_file_dest='F:\ARCHIVE' SCOPE=SPFILE;

 

Configuration de la période de rétention des logs en secondes.

 

SQL> alter system set ARCHIVE_LAG_TARGET=1800 SCOPE=BOTH;

Vous pouvez définir le paramètre d'initialisation ARCHIVE_LAG_TARGET à 1800 secondes pour forcer un archivage des journaux toutes les 30 minutes.

 

Activation base de données Oracle en mode ARCHIVELOG.

 
 SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jun 3 23:04:56 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> connect / as sysdba Connected. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 293601280 bytes Fixed Size 1248624 bytes Variable Size 67109520 bytes Database Buffers 222298112 bytes Redo Buffers 2945024 bytes Database mounted. SQL> alter database archivelog; Database altered. SQL> alter database open; Database altered. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 293601280 bytes Fixed Size 1248624 bytes Variable Size 67109520 bytes Database Buffers 222298112 bytes Redo Buffers 2945024 bytes Database mounted. Database opened. SQL> 

 

 

A cet instant la base de données est en mode ARCHIVELOG.

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Oracle FLASHBACK Database Installation

 

Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
11 septembre 2010 6 11 /09 /septembre /2010 18:48

 

Delete Archivelog avec RMAN.

Comment purger, supprimer les ARCHIVELOG avec RMAN dans Oracle en utilisant l'option UNTIL TIME.

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

Fichier Purge.bat

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

 

Fichier Purge.txt

 
 delete noprompt force archivelog until time='sysdate-7'; 

 

Fichier Purge.log

 
 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 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. 

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Gérer Référentiel RMAN avec CROSSCHECK Backup
Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
19 août 2010 4 19 /08 /août /2010 00:08

 

Forcer un LOG SWITCH avec ALTER SYSTEM SWITCH LOGFILE.

Lorsque le processus LGWR (Log Writer) stop ses écritures dans le groupe 1 de redo et commence à écrire dans le groupe 2 suivant, il se produit naturellement un LOG SWITCH.

Le LOG SWITCH est automatique lorsque le groupe en question est plein.

Pour des opérations de maintenance, il est parfois nécessaire de forcer un ou plusieurs LOG SWITCH.
Par exemple pour supprimer un LOGFILE GROUPE, son statut doit être = INACTIVE.

Si vous êtes en MODE ARCHIVELOG cette opération force l'archivage aussi.

 

Syntaxe log switch :

SQL> ALTER SYSTEM SWITCH LOGFILE ;

 

Exemple log switch :

Nous allons effectuer des LOG SWITCH afin de mettre les Group 1 et 2 en Status INACTIVE.

SQL> SELECT group#, status FROM v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 INACTIVE
         3 INACTIVE 

SQL> ALTER SYSTEM switch logfile;

System altered.

SQL> ALTER SYSTEM switch logfile;

System altered.

SQL> SELECT group#, status FROM v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 INACTIVE
         3 CURRENT



Maintenant nous supprimons le GROUP 1 avec un ALTER DATABASE

SQL> ALTER DATABASE DROP logfile GROUP 1;

Database altered. 

 

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• C'est quoi un REDO-LOG ?
• ALTER SYSTEM SET ARCHIVE_LAG_TARGET
• Réparer Corruption de REDOLOG FILE avec CLEAR LOGFILE
• Activer Mode ARCHIVELOG
• Delete Archivelog Oracle avec RMAN
• Augmenter Changer Taille des membres Redolog-Logfiles
• Deplacer Renommer des membres Redolog-Logfiles
Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
5 mars 2010 5 05 /03 /mars /2010 12:07

ALTER DATABASE ADD LOGFILE GROUP.

Comment changer ou augmenter la taille des membres Redolog (Logfiles).
Comment ajouter un groupe ou membre redolog.

Un membre redolog ne peut pas être redimensionné dynamiquement.
Si nous voulons augmenter la taille des redolog alors nous sommes obligé de recréer et de supprimer les anciens membres.

C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 5 00:00:38 2010

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

SQL> connect sys/******* as sysdba
Connected. 



On sélectionne à partir de V$LOGFILE et V$LOG les membres redolog avec leur tailles.

SQL> SELECT a.group#, a.member, b.bytes/1024/1024 "Taille Mo"
  2  FROM v$logfile a, v$log b
  3  WHERE a.group# = b.group#;

    GROUP# MEMBER                                                   Taille Mo
---------- ------------------------------------------------------- ----------
         3 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO03.LOG            50
         2 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO02.LOG            50
         1 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG            50


Nous avons 3 groupes de 1 membre chacun de 50 Mo.
Nous allons les passer de 50 Mo à 100 Mo chacun.
Voici une méthode simple.

Si c'est une première pour vous, attention, testez ceci d'abord en labo ou en test si possible!!!

Nous allons effectuer des LOG SWITCH afin de mettre les Group 1 et 2 en Status INACTIVE.

SQL> SELECT group#, status FROM v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 INACTIVE
         3 INACTIVE 

SQL> ALTER SYSTEM switch logfile;

System altered.

SQL> ALTER SYSTEM switch logfile;

System altered.

SQL> SELECT group#, status FROM v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 INACTIVE
         3 CURRENT

 

Suppression GROUP REDOLOG avec ALTER DATABASE DROP LOGFILE GROUP.

Maintenant nous supprimons le GROUP 1 avec un ALTER DATABASE

SQL> ALTER DATABASE DROP logfile GROUP 1;

Database altered. 

 

Création GROUP REDOLOG avec ALTER DATABASE ADD LOGFILE GROUP.

Nous allons maintenant recréer le GROUP 1 avec une taille de 100 Mo
 

SQL> ALTER DATABASE add logfile group
      ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG') size 100m reuse;

Database altered. 



On répète l'opération pour le Group 2 et Group 3.
- ALTER SYSTEM switch logfile
- ALTER DATABASE DROP logfile GROUP
- ALTER DATABASE add logfile group

Utiliser en plus un ALTER SYSTEM checkpoint; pour passer en INACTIVE si besoin.
On ne peut faire un DROP que si le membre Redolog à un status = INACTIVE.
Vérifiez avec un SELECT group#, status FROM v$log;

Au final voilà le résultat.

SQL> SELECT a.group#, a.member, b.bytes/1024/1024 "Taille Mo"
  2  FROM v$logfile a, v$log b
  3  WHERE a.group# = b.group#;

    GROUP# MEMBER                                                   Taille Mo
---------- ------------------------------------------------------- ----------
         3 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO03.LOG            100
         2 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO02.LOG            100
         1 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG            100

 

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• C'est quoi un REDO-LOG ?
• ALTER SYSTEM SET ARCHIVE_LAG_TARGET
• Réparer Corruption de REDOLOG FILE avec CLEAR LOGFILE
• Activer Mode ARCHIVELOG
• Delete Archivelog Oracle avec RMAN
• Deplacer Renommer des membres Redolog-Logfiles
Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
3 mars 2010 3 03 /03 /mars /2010 22:44

Déplacer et/ou Renommer des membres Redolog (LogFiles)

Comment déplacer mes groupes de REDO LOG.

Par soucis de performance il est parfois nécessaire de devoir déplacer ou renommer les membres Redolog d'une instance de base de données. Voici une des solutions, simple et efficace avec ALTER DATABASE RENAME FILE.

Etape 1 - On constate l'emplacement physique actuel des membres redolog.

C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Mar 3 23:00:05 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> connect sys/**** as sysdba
Connected.

SQL> SELECT member FROM v$logfile;

MEMBER
-----------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO03.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO02.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG



Etape 2 - On stop la base de données (SHUTDOWN) et on move le membre redolog (HOST MOVE)

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> host move C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG D:\NEW_REDO01.LOG
        1 fichier(s) déplacé(s).

Vous pouvez aussi utiliser HOST COPY mais il faudra supprimer l'ancien Redolog à la main.



Etape 3 -MOUNT de la base et on signifie à Oracle le nouvel emplacement du Redolog

SQL> startup mount
ORACLE instance started.

Total System Global Area  293601280 bytes
Fixed Size                  1248624 bytes
Variable Size              71303824 bytes
Database Buffers          218103808 bytes
Redo Buffers                2945024 bytes
Database mounted.

SQL>ALTER DATABASE RENAME FILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG'
         TO  'D:\NEW_REDO01.LOG';
Database altered.

ALTER DATABASE RENAME FILE ne fait que mettre à jour le dictionnaire de données et les controls files



Etape 4 - ALTER DATABASE OPEN et on vérifie la prise en compte par Oracle

 

SQL> ALTER DATABASE OPEN;

Database altered.

SQL> SELECT member FROM v$logfile;

MEMBER
------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO03.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO02.LOG
D:\NEW_REDO01.LOG



 

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• C'est quoi un REDO-LOG ?
• ALTER SYSTEM SET ARCHIVE_LAG_TARGET
• Réparer Corruption de REDOLOG FILE avec CLEAR LOGFILE
• Activer Mode ARCHIVELOG
• Delete Archivelog Oracle avec RMAN
• Augmenter Changer Taille des membres Redolog-Logfiles
• Deplacer Renommer des membres Redolog-Logfiles
Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
16 février 2010 2 16 /02 /février /2010 16:35

 

C’est quoi les Redo-log (Fichiers de journalisation)

Dans une base de données Oracle, toutes les transactions sont enregistrées dans des fichiers redo-log. Ce sont ces fichiers qui permettent une restauration en cas de panne de la base de données ou par exemple en cas d’arrêt brutal d’un serveur.

Ces fichiers sont très importants pour la sécurité de la base ainsi que pour sa performance. Les redo-log sont organisés en groupe et sont écrits de façon circulaire.

Nous avons 2 groupes au minimum composés au minimum d’un membre. Lorsque le premier groupe est plein, il y a un SWITCH (basculement) pour le passage au deuxième groupe. Oracle écrase les données du premier groupe, lorsqu’il a fini son tour circulaire.
C’est le processus LGWR (LOGWRITER) qui écrit dans les redo.

Il existe deux modes de fonctionnement dans Oracle pour la gestion
des fichiers de journalisation.


Le mode NOARCHIVELOG (par défaut)
Pas d’historique de journalisation (les fichiers sont périodiquement écrasés

Le mode ARCHIVELOG
Conserve les fichiers de journalisation dans des archives.


Infos sur les membres redolog dans la vue V$LOGFILE

SQL> SELECT group#, type, member, status
     FROM v$logfile;


GROUP# TYPE MEMBER STATUS
3 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO03.LOG  
2 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO02.LOG  
1 ONLINE C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\REDO01.LOG  


Status

INVALID = fichier inaccessible
STALE = nouveaux membre incomplet
DELETED = inutilisé, supprimé
NULL = en cours d’utilisation

Infos sur les groupes redolog dans la vue V$LOG

SQL> SELECT group#, members,sequence#, bytes, archived, status
     FROM v$log ;

GROUP# MEMBERS SEQUENCE# BYTES ARCHIVED STATUS
1 1 401 52428800 NO INACTIVE
2 1 402 52428800 NO CURRENT
3 1 400 52428800 NO INACTIVE


Status

INACTIVE = groupe inutile pour une restauration
CURRENT = groupe en cours d’écriture
ACTIVE = groupe nécessaire pour une restauration
UNUSED = nouveau groupe vierge


Infos sur historiques redolog dans la vue V$LOGHIST et V$LOG_HISTORY

SQL> SELECT * FROM V$LOGHIST;
SQL> SELECT * FROM V$LOG_HISTORY;


Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
10 février 2010 3 10 /02 /février /2010 00:37

 

SCN System Change Number Oracle


Le SCN c’est quoi ?
On peut dire que c’est un identifiant interne unique qui s’accroit dans le temps (La fonction SCN possède une sorte d’horloge interne).
Chaque transaction commitée a un SCN associé, ce qui permet d’identifier les changements fait par un ordre SQL.

Le SCN joue un rôle important dans la consistance de la base de données Oracle, puisque toutes les opérations de restaurations se font à partir du SCN.

Le Thread SMON (System Monitor) se base sur ce SCN pour récupérer une instance après un arrêt anormal, et aussi pour vérifier que les entêtes des fichiers de données (Datafiles) et des fichiers de contrôles (Control Files) sont synchro au niveau du dernier SCN.

Voir le dernier SCN de la database


SQL> SELECT current_scn FROM V$DATABASE;
SQL> SELECT dbms_flashback.get_system_change_number() from dual;


Voir les SCN par ligne d’une Table

SQL> SELECT ora_rowscn FROM matable;

Attention si la clause ROWDEPENDENCIES n’a pas été incluse lors de la création de la table, vous ne verrez pas les SCN de chaque ligne mais le dernier SCN unique pour tous les Block physiques de données.


Connaitre la date (TIMESTAMP) à partir d’un numéro SCN

SQL> SELECT scn_to_timestamp(ora_rowscn) FROM maTable;
SQL> SELECT scn_to_timestamp(SCN) FROM DUAL;


Connaitre le numéro SCN à partir d’une date donnée

SQL> SELECT timestamp_to_scn(to_date('20/12/2009 19:53','DD/MM/YYYY HH24:MI')) "SCN"
     FROM dual;


Connaître les SCN et Date sur les 5 derniers jours environ.

Table utilisée par le Thread SMON (alimentée toute les 5 minutes environ)

SQL> SELECT time_dp,scn
     FROM smon_scn_time
     ORDER BY time_dp;



Voir les SCN des transactions en cours

SQL> SELECT SES_ADDR, START_SCNB
     FROM V$TRANSACTION
     ORDER BY START_SCNB;



Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Oracle FLASHBACK VERSIONS QUERY
• Oracle FLASHBACK TRANSACTION QUERY
Repost 0
Published by Daniel Roesch - dans REDOLOG - ARCHIVELOG
commenter cet article
17 janvier 2010 7 17 /01 /janvier /2010 02:46

 

Lire le contenu des REDO LOG FILE Oracle avec LOGMINER.

 

Tous les changements apportés à la base de données sont enregistrées dans les fichiers Redo Log afin que les opérations de récupération de base puissent être réalisées.

LOGMINER est un outil ORACLE qui permet d’extraire, de lire les informations contenues dans les REDOLOG et ARCHIVELOG.

Dans cet article nous verrons dans un premier temps la lecture des REDOLOG.

 

 

Etape N° 1

 

Connexion en user SYS

On exécute le DBMS_LOGMNR avec le path des fichiers redolog à analyser.

 

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(logfilename =>

'C:\oracle\product\10.2.0\oradata\bdd\redo01.log',options => DBMS_LOGMNR.NEW);

 

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(logfilename =>

'C:\oracle\product\10.2.0\oradata\bdd\redo02.log',options => DBMS_LOGMNR.ADDFILE);

 

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(logfilename =>

'C:\oracle\product\10.2.0\oradata\bdd\redo03.log',options => DBMS_LOGMNR.ADDFILE);

 



Vous pouvez voir les dates/heures des switch logfile et les SCN par cette requête.

 

SQL> SELECT FILENAME,

            LOW_TIME,

            HIGH_TIME,

            LOW_SCN,

            NEXT_SCN

FROM V$LOGMNR_LOGS;

 

 

Etape N° 2

 


On démarre LOGMINER.

A partir de cet instant une vue V_$LOGMNR_CONTENTS sera disponible et alimentée.

 

SQl> EXECUTE DBMS_LOGMNR.START_LOGMNR(options=>

             DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG +

             DBMS_LOGMNR.NO_ROWID_IN_STMT +
             DBMS_LOGMNR.NO_SQL_DELIMITER);

 

 

Vous pouvez spécifier une date et une heure pour cibler vos recherches, dans l’exemple ci dessous je souhaite toutes les transactions à partir du 16/01/2010 à 20h45.

 

SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR(STARTTIME =>

to_date('16/01/2010 20:45:00','DD/MM/YYYY HH24:MI:SS'));

 



Etape N° 3

 

On interroge la vue V_$LOGMNR_CONTENTS ou la table V$LOGMNR_CONTENTS.

Dans la colonne SQL_REDO = Transaction faite.

Dans la colonne SQL_UNDO = Transaction à faire pour défaire

 

 

SELECT USERNAME AS USR,

       SEG_OWNER AS OWNER,

       SCN,

       TIMESTAMP,

       (XIDUSN || '.' || XIDSLT || '.' ||  XIDSQN) AS XID,

       SQL_REDO,

       SQL_UNDO

FROM V$LOGMNR_CONTENTS

WHERE USERNAME IN ('USER')   -- remplacer USER par vos USERS

AND   SEG_OWNER IN ('USER');

 

 

Une requête pour faire une statistique des tables les plus mises à jour ?

 

SELECT SEG_OWNER,

       TABLE_NAME,

       SEG_NAME,

       COUNT(*) AS Hits

FROM   V$LOGMNR_CONTENTS

WHERE  SEG_NAME NOT LIKE '%$'

AND    SEG_OWNER in ('USER')

AND    USERNAME in ('USER')

GROUP BY SEG_OWNER,

         TABLE_NAME,

         SEG_NAME

ORDER BY Hits DESC;

 

 



Etape N° 4

 

On ferme LOGMINER. La vue V_$LOGMNR_CONTENTS est purgée.

 

SQL> EXECUTE DBMS_LOGMNR.END_LOGMNR();

 

 

On ré exécute l’étape 1 à 4 pour analyser un autre redolog.


Repost 0
Published by Daniel R. - dans REDOLOG - ARCHIVELOG
commenter cet article