Recuperando Datos Borrados en Oracle con LogMiner: Caso Práctico Paso a Paso


Introducción
¿Borraste accidentalmente datos en una tabla crítica de producción y no tienes un punto de restauración inmediato? ¿No puedes usar Flashback por limitaciones de configuración o licenciamiento? Aquí es donde LogMiner puede convertirse en tu aliado silencioso.
En este laboratorio aprenderás cómo utilizar LogMiner para recuperar información eliminada en una base de datos Oracle 19c (preferiblemente en modo NO CDB). Este proceso es ideal tanto para entornos de desarrollo como de producción (con las precauciones adecuadas).
1. Requisitos del entorno
Asegúrate de contar con lo siguiente antes de comenzar:
Oracle Database 19c instalado (modo NO CDB recomendado).
Usuario con privilegios DBA.
Logs de Redo (archived o online) accesibles.
Modo ARCHIVELOG activado.
Verifica si ARCHIVELOG
está habilitado:
ARCHIVE LOG LIST;
Si no lo está, actívalo:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
2. Crear entorno de pruebas
Conéctate como SYS
o cualquier usuario con privilegios DBA:
-- Crear usuario de prueba
CREATE USER logminer_test IDENTIFIED BY logminer_test;
GRANT CONNECT, RESOURCE, DBA TO logminer_test;
Crear tabla y simular un borrado:
-- Conectar como logminer_test
CONN logminer_test/logminer_test
-- Crear tabla
CREATE TABLE empleados (
id NUMBER PRIMARY KEY,
nombre VARCHAR2(100)
);
-- Insertar registros
INSERT INTO empleados VALUES (1, 'Carlos');
INSERT INTO empleados VALUES (2, 'María');
COMMIT;
-- Simular borrado accidental
DELETE FROM empleados WHERE id = 1;
COMMIT;
3. Habilitar LogMiner
Ahora, desde el usuario SYS o DBA:
Ver logs disponibles:
COL MEMBER FOR A100
SELECT GROUP#, MEMBER FROM V$LOGFILE;
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME, STATUS
FROM V$ARCHIVED_LOG
ORDER BY SEQUENCE# DESC;
Agregar archivo de log (ajusta la ruta):
BEGIN
DBMS_LOGMNR.ADD_LOGFILE(
LOGFILENAME => '/u01/app/oracle/oradata/ORCL/redo01.log',
OPTIONS => DBMS_LOGMNR.NEW
);
END;
/
Iniciar sesión de LogMiner:
BEGIN
DBMS_LOGMNR.START_LOGMNR(
OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG
);
END;
/
4. Consultar los cambios
Consulta la vista V$LOGMNR_CONTENTS
para inspeccionar lo ocurrido:
SELECT
TO_CHAR(TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') AS hora,
OPERATION,
SQL_REDO,
SQL_UNDO,
USERNAME,
TABLE_NAME
FROM
V$LOGMNR_CONTENTS
WHERE
TABLE_NAME = 'EMPLEADOS'
AND USERNAME = 'LOGMINER_TEST'
ORDER BY hora;
Tip: Deberías ver una fila con operación DELETE
, donde el campo SQL_UNDO
te indica cómo revertirla.
5. Restaurar dato borrado
Toma el SQL_UNDO
y ejecútalo para restaurar:
INSERT INTO empleados VALUES (1, 'Carlos');
COMMIT;
6. Finalizar sesión LogMiner
BEGIN
DBMS_LOGMNR.END_LOGMNR;
END;
/
Comparación rápida con otras técnicas
Técnica | Licencia | Complejidad | Ideal para |
LogMiner | Incluida | Media | Auditoría, recuperación puntual |
Flashback Query | Enterprise | Baja | Reversiones rápidas |
RMAN + Restore Point | Cualquier | Alta | Recuperación de desastres |
Tips finales para producción
Siempre prueba en un entorno no productivo primero.
Automatiza la adición de logs usando scripts basados en
V$ARCHIVED_LOG
.Si necesitas auditar constantemente, evalúa crear una tabla de auditoría personalizada basada en los resultados de LogMiner.
No olvides revocar el rol DBA al usuario de pruebas una vez finalizado el ejercicio.
Nivel Avanzado (para seguir explorando)
Agregar múltiples archivos de log con
DBMS_LOGMNR.ADD_LOGFILE
.Filtrar por SCN o timestamp para acotar los resultados.
Exportar los datos de
V$LOGMNR_CONTENTS
a una tabla intermedia.Automatizar la recuperación con un procedimiento PL/SQL.
Conclusión
LogMiner es una herramienta potente y poco explotada, ideal para recuperación puntual y auditoría detallada. Aunque no reemplaza una estrategia de backup adecuada, puede salvarte en escenarios de pérdida puntual de datos.
¿Te gustaría un artículo sobre cómo otro tipo de recuperación? ¡Déjalo en los comentarios o escríbenos a Admin@LaBoticaDelDBA.com !
Subscribe to my newsletter
Read articles from Mauricio Muñoz Palma directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Mauricio Muñoz Palma
Mauricio Muñoz Palma
Bienvenidos a "La Botica del DBA" Donde la pasión por las bases de datos Oracle se transforma en conocimiento y excelencia. Este espacio está diseñado para ser el laboratorio de ideas, soluciones y estrategias que todo DBA necesita para optimizar, innovar y liderar en el mundo de las bases de datos. Desde los fundamentos hasta las últimas tendencias, aquí encontrarás guías prácticas, análisis profundos y herramientas que impulsarán tu carrera y tus proyectos al siguiente nivel.