oracle logminer

17
Presentación de Oracle LogMiner

Upload: jose-francisco-gomez-diez

Post on 11-Apr-2017

83 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Oracle Logminer

Presentación de Oracle LogMiner

Page 2: Oracle Logminer

El LogMiner es un paquete que viene por defecto instalado con el motor de la BBDD (RDBMS) y su función es la de poder interpretar el contenido de los ficheros de REDO de una manera cómoda y sencilla. Logminer nos permite realizar una recuperación lógica granular deshaciendo cambios específicos efectuados por una o mas transacciones. De esta manera se minimiza la necesidad de realizar una recuperación hasta un punto en el tiempo cuando se produce un error de aplicación lógica

¿Qué es LogMiner?

Page 3: Oracle Logminer

LogMiner procesa los ficheros de redo log y traduce su contenido en sentencias SQL que representan las operaciones lógicas realizadas en la Base de Datos.

Después, la vista V$LOGMNR_CONTENTS lista las sentencias SQL reconstruidas que representan las operaciones originales (columna SQL_REDO) y las sentencias SQL correspondientes para deshacer las operaciones (columna SQL_UNDO).

LogMiner contiene un procedimiento para extraer la informacion del diccionario de datos a un archivo de texto del Sistema Operativo denominado archivo de diccionario de LogMiner.

¿Qué es LogMiner?

Page 4: Oracle Logminer

1. El primer paso para analizar los archivos log consiste en crear el archivo de diccionario

- Inicializar el parámetro de la BBDD UTL_FILE_DIR con el directorio en que el Oracle creara el archivo de diccionario

- Ejecutar el procedimiento BUILD del paquete DBMS_LOGMNR_D para generar este archivo. Este procedimiento esta incluido dentro del fichero ?/rdbms/admin/dbmslogmnrd.sql (ejecutar con el usuario SYS).

SQL> exec DBMS_LOGMNR_D.BUILD('orc1dict.ora','/oracle/database');

¿Como funciona LogMiner?

Page 5: Oracle Logminer

2. LogMiner puede analizar tanto los ficheros de de archivelog como los ficheros de redolog online. Para poder realizar este análisis se proporciona una lista de los archivos que se van analizar con el procedimiento DBMS_LOGMNR.ADD_LOG_FILE.

¿Como funciona LogMiner?

Page 6: Oracle Logminer

Para agregar otros archivos a la lista ya creada, se utiliza el argumento ADDFILE.

SQL>exec DBMS_LOGMNR.ADD_LOG_FILE('/oracle/database/ORC1/log2orc1.ora', DBMS_LOGMNR.ADDFILE);

Para desechar los nombres de archivo suministrados anteriormente y crear una nueva lista de archivos de análisis, se incluye el argumento NEW al dar el nombre al primer archivo de la lista.

SQL> exec DBMS_LOGMNR.ADD_LOG_FILE('/oracle/database/ORC1/log1orc1.ora', DBMS_LOGMNR.NEW);

¿Como funciona LogMiner?

Page 7: Oracle Logminer

3. Una vez creada la lista de los archivos que se deben de analizar, puede iniciarse el análisis mediante el procedimiento START_LOGMNR. Los parámetros que acepta este procedimiento son: STARTSCN = Limite inferior del rango SCN que se va analizar ENDSCN = Limite superior del rango SCN que se va analizar STARTTIME = Valor de fecha que indica el limite inferior del rango de tiempo de análisisENDTIME = Valor de fecha que indica el limite superior del rango de tiempo de análisisDICTFILENAME = Nombre del archivo de diccionario LogMiner.

¿Como funciona LogMiner?

Page 8: Oracle Logminer

exec DBMS_LOGMNR.START_LOGMNR(dictfilename => '/oracle/database/orc1dict.ora',starttime => to_date('01/01/2004:08AM','DD/MM/YYYY:HHAM'),endtime => to_date('01/01/2004:10AM','DD/MM/YYYY:HHAM'));

Extrae los detalle de las transacciones realizadas entre las hora especificadas

¿Como funciona LogMiner?

Page 9: Oracle Logminer

4. Utilize el procedimiento END_LOGMNR para liberar los recursos utilizados en la operación de análisis

SQL> exec DBMS_LOGMNR.END_LOGMNR;

5. La vista del diccionario V$LOGMNR_CONTENTS se puede consultar en la sesión que ha realizado el analisis para ver la información de registro. Otras sesiones no pueden ver los datos al consultar esta vista. Si otras sesiones deben el resultado, o si se deben de realizarse varios pases del contenido de la vista, se debería de almacenar la información de la vista en una tabla.

¿Como funciona LogMiner?

Page 10: Oracle Logminer

Descripción de la vista V$LOGMNR_CONTENTS

SCN = Numero de cambio del sistemaTIMESTAMP = Registro de horaTHREAD# = Numero de threadLOG_ID = Identificador del registroXIDUSN = Numero del segmento undo identificador de transacciónXIDSLOT = Numero de ranura del identificador de transacciónXIDSQN = Numero de secuencia del identificador de transacciónABS_FILE = Numero de archivo absoluto del bloque de datosREL_FILE = Numero de archivo relativo del bloque de datosDATA_BLK# = Numero de bloque de datosDATA_OBJ# = Numero del objeto del bloque de datosDATA_OBJD# = Numero del objeto de datos del bloque de datos

¿Como funciona LogMiner?

Page 11: Oracle Logminer

Descripción de la vista V$LOGMNR_CONTENTS (II) SEG_OWNER = Nombre del propietario del segmentoSEG_NAME = Nombre del segmento SEG_TYPE_NAME = Tipo del segmentoTABLE_SPACE = Nombre del tablespace del segmentoROW_ID = Identificador de filaSESSION# = Numero de sesiónSERIAL# = Numero de serieUSERNAME = Nombre del usuarioROLLBACK = Solicitud de rollbackOPERATION = OperaciónSQL_REDO = Redo de SQLSQL_UNDO = Undo de SQLINFO = Mensaje informativoSTATUS = Estado

¿Como funciona LogMiner?

Page 12: Oracle Logminer

SCN proporciona la información apropiada para realizar una recuperación hasta un punto en el tiempo, como RECOVER UNTIL SCN.TIMESTAMP proporciona la informacion exacta para realizar una recuperación hasta un punto en el tiempo, como RECOVER UNTIL TIMESEG_OWNER y SEG_NAME identifican el objeto y el propietario en el que tuvo lugar la operación DML USERNAME identifican el usuario que ejecuto la sentencia SQL_REDO repite la sentencia que se ejecutoSQL_UNDO explica como deshacer la operación realizada en la sentencia especificada en SQL_REDO

¿Como funciona LogMiner?

Page 13: Oracle Logminer

Para obtener información acerca de los log analizados hay que consultar las siguientes vistas dinámicas:

V$LOGMNR_DICTIONARY (TIMESTAMP, FILENAME), V$LOGMNR_LOGS (LOG_ID, FILE_NAME, LOW_SCN, HIGH_SCN, LOW_TIME, HIGH_TIME)

v$LOGMNR_PARAMETERS => Argumentos que se proporcionaron durante el análisis

¿Como funciona LogMiner?

Page 14: Oracle Logminer

Ejemplo practico:

1. Crear el diccionario de logminer

exec DBMS_LOGMNR_D.BUILD( DICTIONARY_FILENAME =>'dictionary.ora', DICTIONARY_LOCATION => '/opt/oracle/PRETRA/utl_file/migracion');

2. Añadir logs al diccionario (repetir esto para cada log)

exec DBMS_LOGMNR.add_logfile('/opt/oracle/PRETRA/utl_file/PRETRA1_1_29323_591900604.arc');

¿Como funciona LogMiner?

Page 15: Oracle Logminer

Ejemplo practico (II)

3. Arrancar el logminer para poder consultar las vistas

exec DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => '/opt/oracle/PRETRA/utl_file/migracion/dictionary.ora');

4. Consulta para ver la información cargada

select to_char(timestamp,'DD-MM-YYYY HH24:MI:SS'), seg_owner, table_name, operation, sql_redofrom v$logmnr_contentswhere trim(sql_redo) is not null;

¿Como funciona LogMiner?

Page 16: Oracle Logminer

Ejemplo practico (III):OPERATION SQL_REDO SQL_UNDO===============================================================================DELETE delete from "OE"."ORDERS" insert into "OE"."ORDERS" where "ORDER_ID" = '2413' ("ORDER_ID","ORDER_MODE", and "ORDER_MODE" = 'direct' "CUSTOMER_ID","ORDER_STATUS", and "CUSTOMER_ID" = '101' "ORDER_TOTAL","SALES_REP_ID", and "ORDER_STATUS" = '5' "PROMOTION_ID") and "ORDER_TOTAL" = '48552' values ('2413','direct','101', and "SALES_REP_ID" = '161' '5','48552','161',NULL); and "PROMOTION_ID" IS NULL and ROWID = 'AAAHTCAABAAAZAPAAN';

¿Como funciona LogMiner?

Page 17: Oracle Logminer

GRACIAS POR SU ATENCION

Presentación Oracle LogMiner

e-mail: [email protected]