!
!
!
!
!
!
!
!

Oracle 8i - Le logminer !

Voici une autre possibilité, nouvelle en 8i qui nous rendra l'existence plus facile ! 

Logminer permet de scruter les fichiers REDOLOG (en ligne ou archivés) et dévoiler les transactions s'y trouvant. Les transactions sont trouvées sur la base des requêtes SQL. 
La vue V$LOGMNR_CONTENTS fournit les instructions SQL que ORACLE a exécuté ainsi que les ordres SQL nécessaires pour revenir en arrière (UNDO). Cette vue doit être peuplée avec le contenu des fichiers REDOLOG. 
Certaines restrictions s'appliquent, lire la doc Oracle !

Ce qu'il faut faire pour l'utiliser:

  1. Créer un dictionnaire de la base. Ce pas est facultatif mais important pour la compréhension ultérieure des résultats. Pour faire ceci, nous utiliserons une procédure fournie par Oracle qui écrira DICTIONARY_FILENAME dans le répertoire DICTIONARY_LOCATION. Pré requis: La base en mode MOUNT ou NOMOUT, DICTIONARY_LOCATION répertorié par UTL_FILE_DIR dans INIT.ORA

  2. Spécifier les redolog files à analyser. Vous le ferez avec DBMS_LOGMNR.ADD_LOGFILE

  3. Démarrer l'analyse.

  4. Visualiser les résultats.

  • Créer la table test

 

  • Répertorier la destination du dictionnaire dans INIT.ORA 

 

  • Constitution du dictionnaire

 

  • Quelques actions sur la table 

 

  • Ajout des REDOLOGs à la liste à analyser ! (Ici on prend un, courant) et on met le résultat de l'analyse dans v$logmnr_contents

 

  • Requête sur les transactions d'un utilisateur (par exemple)


Ce que nous obtenons, a gauche ce qui avait été fait, a droite ce qu'on devrait faire pour défaire ;-) (extrait)

/*
delete from ANP.TAB_LOG where NOM = insert into
'Caulea' and PRENOM = 'Radu'        and ANP.TAB_LOG(NOM,PRENOM,AGE,NAISS)
AGE = 39 and NAISS =                values
TO_DATE('28-JUN-1960 00:00:00',     ('Caulea','Radu',39,TO_DATE('28-JUN
'DD-MON-YYYY HH24:MI:SS') and ROWID -1960 00:00:00', 'DD-MON-YYYY
= 'AAADBDAAIAAAFqKAAk';             HH24:MI:SS'));

delete from ANP.TAB_LOG where NOM = insert into
'Caulea' and PRENOM = 'Stefan' and  ANP.TAB_LOG(NOM,PRENOM,AGE,NAISS)
AGE = 2 and NAISS =                 values
TO_DATE('30-AOU-1997 00:00:00',     ('Caulea','Stefan',2,TO_DATE('30-AO
'DD-MON-YYYY HH24:MI:SS') and ROWID U-1997 00:00:00', 'DD-MON-YYYY
= 'AAADBDAAIAAAFqKAAl';             HH24:MI:SS'));

*/


Copyright © 1998-2002 Radu Caulea, TAFORA MAJ 20/04/2006 !
Commentaires et suggestions radu[CHEZ]tafora.fr