Dimanche 17 janvier 2010 7 17 /01 /Jan /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.


Par Daniel R. - Publié dans : REDOLOG / ARCHIVELOG
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

Rechercher Articles Oracle SQL sur ce Site.

Loading

À lire aussi…

Download PDF Oracle

Rechercher sur le site

Oracle 10G - DBA -

Syndication

  • Flux RSS des articles
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés