Como Recuperar Dados Perdidos com o LogMiner: Um Guia Prático e Acompanhado
A recuperação de dados perdidos em um banco de dados Oracle é uma situação que muitos DBAs enfrentam em seu dia a dia. Seja devido a uma exclusão acidental ou a um erro inesperado, o impacto pode ser significativo no ambiente de produção. No entanto, essas situações podem ser resolvidas de forma eficaz e ágil com o uso do LogMiner, uma poderosa ferramenta integrada ao Oracle Database. Este artigo apresenta um guia prático e detalhado para ajudá-lo a recuperar dados excluídos, destacando cada etapa de maneira clara e objetiva. Ao seguir este passo a passo, você verá como o LogMiner pode ser uma solução indispensável para manter a integridade do seu banco de dados e garantir a segurança das informações sob sua responsabilidade.
Cenário Prático: Recuperando um Registro Excluído
Para ilustrar, vamos criar uma tabela de exemplo e inserir um registro:
CREATE TABLE TBL_BAU (
id NUMBER PRIMARY KEY,
nome VARCHAR2(50)
);
INSERT INTO TBL_BAU (id, nome) VALUES (1, 'Tampa');
INSERT INTO TBL_BAU (id, nome) VALUES (2, 'Chave');
COMMIT;Agora, vamos simular a exclusão acidental desse registro:
DELETE FROM TBL_BAU WHERE id = 1;
COMMIT;Neste momento, o dado foi removido da tabela, mas as informações da transação permanecem registradas nos redo logs e, em ambientes com ARCHIVELOG, nos archive logs.
Recuperando Dados com LogMiner – Passo a Passo no Seu Ambiente Oracle
- Ambiente com ARCHIVELOG ativo.
- Online Redo Logs com SEQUENCE# atual: 89 (CURRENT).
- Último ARCHIVED LOG disponível: SEQUENCE# = 88 (grupo 1).
Os passos serão:
- Habilitar o Supplemental Logging (se ainda não estiver ativo).
- Usar LogMiner para analisar os logs arquivados.
- Identificar e recuperar uma exclusão acidental.
Adicionar mais de um arquivo de redo log, se necessário? Sim, é possível adicionar vários arquivos no LogMiner!
1. Ativar o Supplemental Logging (se ainda não estiver ativo)
Esse passo é fundamental para garantir que os redo logs tenham dados suficientes para gerar o SQL_UNDO:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;2. Verificar os arquivos disponíveis
Arquivos Online (V$LOG + V$LOGFILE):
SELECT l.GROUP#, l.SEQUENCE#, l.STATUS, lf.MEMBER
FROM V$LOG l
JOIN V$LOGFILE lf ON l.GROUP# = lf.GROUP#;Último Archive Log:
SELECT THREAD#, SEQUENCE#, NAME
FROM (
SELECT THREAD#, SEQUENCE#, NAME
FROM V$ARCHIVED_LOG
WHERE COMPLETION_TIME IS NOT NULL
ORDER BY COMPLETION_TIME DESC
)
WHERE ROWNUM = 1;3. Iniciar o LogMiner e adicionar os arquivos de log
Você pode adicionar um ou mais arquivos . Use DBMS_LOGMNR.ADD_LOGFILE com NEW para o primeiro e ADDFILE para os demais, se quiser incluir logs de outras sequências (como 87, 88 e até 89, se arquivado).
BEGIN
DBMS_LOGMNR.ADD_LOGFILE(
LOGFILENAME => '/u02/FRA/orcl/ORCL/archivelog/2025_04_16/o1_mf_1_89_mzzq1khy_.arc',
OPTIONS => DBMS_LOGMNR.NEW
);
DBMS_LOGMNR.ADD_LOGFILE(
LOGFILENAME => '/u02/oradata/orcl/ORCL/onlinelog/o1_mf_3_mybfzhrt_.log',
OPTIONS => DBMS_LOGMNR.NEW
);
END;
/4. Iniciar o LogMiner
Utilizando o dicionário online (forma mais simples):
BEGIN
DBMS_LOGMNR.START_LOGMNR(
OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG
);
END;
/5. Consultar as transações de deleção na tabela alvo
Agora você consulta o conteúdo minerado:
SELECT SCN, TIMESTAMP, SQL_REDO, SQL_UNDO, OPERATION, SEG_NAME
FROM V$LOGMNR_CONTENTS
WHERE UPPER(SEG_NAME) = 'TBL_BAU'
AND OPERATION = 'DELETE';Se não aparecer nada: tente adicionar arquivos anteriores com ADDFILE, ou confira se o supplemental logging estava ativo antes da exclusão.
6. Recuperar o registro usando SQL_UNDO
Você verá algo como:
SQL_UNDO: INSERT INTO “SCHEMA”.”TBL_BAU”(“ID”,”NOME”) VALUES (1,’Tampa’);
Execute:
INSERT INTO USR_BICUDO.TBL_BAU (id, nome) VALUES (3, 'Fechadura');
COMMIT;7. Encerrar o LogMiner
Após restaurar o dado, finalize a sessão:
BEGIN
DBMS_LOGMNR.END_LOGMNR;
END;
/Conforme exploramos ao longo deste artigo, o LogMiner se mostra uma ferramenta valiosa no arsenal de um DBA para lidar com situações de perda de dados. Ao dominar seu uso, você estará equipado para agir rapidamente em momentos críticos, minimizando impactos e mantendo a confiança no seu ambiente de produção. Mais do que um simples tutorial técnico, este guia foi desenvolvido para integrar práticas reais e aplicáveis à rotina do DBA.
Esperamos que, ao concluir esta leitura, você esteja ainda mais confiante na sua capacidade de proteger e recuperar informações vitais. Lembre-se: cada minuto conta, e ferramentas como o LogMiner existem para transformar desafios em soluções rápidas e eficazes.

O logiminer realmente e uma mão na roda.
Parabens pelo artigo!
Bom artigo!
Você não acha que com a IA,a tendencia é que esse trabalho operacional acabe desparecendo ou pelo menos chegando a níveis minímos?
Olá, Zaney!
Acredito que a questão não é ‘se’, mas sim ‘quando’ isso acontecerá.
Na minha humilde opinião, um profissional deve conhecer bem a ferramenta com a qual está trabalhando. É fundamental ter um profundo entendimento de sua arquitetura e conhecer suas limitações. Isso é algo que a IA ainda não consegue fazer.