Configurar LogMiner

Hoy voy a describir cómo utilizar LogMiner para revisar lo que hay dentro de los archive en una base de datos diferente a la que generó le archived log (basado en la nota How to Setup LogMiner [ID 111886.1] de metalink)
Lo primero que necesitamos de la base de datos original:

1. El archivo Archive
2. El diccionario de la base de datos, para obtenerlo haremos esto:

          2.1 Asegurarnos que existe un directorio definido en el UTL_FILE_DIR y que tenemos permisos de escritura.                

               Vamos a utilizar este ejemplo:
                   UTL_FILE_DIR = /oracle/logs
         2.2 Ejecutar el procedimiento DBMS_LOGMNR_D.BUILD, para generar el diccionario de la base de datos de la cual queremos ver el contenido de sus archives. Le tenemos que pasar dos       parámetro  el nombre del fichero y el directorio en el que queremos que se genere:
          Por ejemplo:

       EXECUTE DBMS_LOGMNR_D.BUILD( -
       DICTIONARY_FILENAME =>'dictionary.ora', -
       DICTIONARY_LOCATION => '/oracle/logs');

(No os olvidéis de poner el guión ‘-‘ al final de cada línea cuando se ejecuta un comando PL/SQL de más de una línea en SQL*PLUS)

Una vez que tenemos los dos archivos, el archived log y el diccionario nos vamos a una instancia Oracle 8.1.X o superior.

Especificar los ficheros en la base de datos donde los vamos a analizar (diferente de la original). Lo primero que hay que hacer es lo siguiente:
1. Crear una lista con los archive a analizar. Con el primer archivo se debe especificar tenemos que añadir la opción NEW (crea un nueva lista). Ejemplo:

           EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
           LOGFILENAME => '/oracle/logs/log1.f', -
           OPTIONS => dbms_logmnr.NEW);

2. Si se van  a añadir más archivos:

            EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
            LOGFILENAME => '/oracle/logs/log2.f', -
            OPTIONS => dbms_logmnr.ADDFILE);
   

3. Para borrar uno de la lista:

    
          EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
          LOGFILENAME => '/oracle/logs/log2.f', -
          OPTIONS => dbms_logmnr.REMOVEFILE);

4. Empezar a utilizar logminer, con el diccionario que se ha creado en la anterior base de datos:

           EXECUTE DBMS_LOGMNR.START_LOGMNR( -
           DICTFILENAME =>'/oracle/dictionary.ora');

                       Empezar a utilizarlo para una fecha en concreto:

           EXECUTE DBMS_LOGMNR.START_LOGMNR( -
           DICTFILENAME => '/oracle/dictionary.ora', -
           STARTTIME => to_date('01-Jan-1998 08:30:00', 'DD-MON-YYYY HH:MI:SS'), -
           ENDTIME => to_date('01-Jan-1998 08:45:00', 'DD-MON-YYYY HH:MI:SS'));

                       Para un SCN en concreto:

          EXECUTE DBMS_LOGMNR.START_LOGMNR( -
          DICTFILENAME => '/oracle/dictionary.ora', -
          STARTSCN => 100, -
          ENDSCN => 150);

5. El contenido de los archive se encuentrará en la tabla  V$LOGMNR_CONTENTS ordenado por SCN.