Pular para o conteúdo

Como usar o Oracle LogMiner para extrair dados dos Redo Logs: Um Guia Passo a Passo

Garimpando com Oracle LogMiner: RedoLog

O Oracle LogMiner é uma planta de mineração se bem usada pode extrair joias preciosas.

A proposta deste artigo é com um passo a passo ver como usar o Log Miner para extrair informações dos Redo Log, ou seja visualizar o comandos executados antes mesmo de serem comitados, e para isso vamos usar os RedoLogs para isso

O Que São os Logs Redo?

Cada entrada registra meticulosamente as ações realizadas no banco de dados, como se fossem os passos de um minerador explorando as galerias subterrâneas. Este diário é essencial para que possamos reconstruir o caminho percorrido, especialmente se precisarmos voltar no tempo para recuperar algo valioso que foi perdido.
Assim como um minerador profissional usa equipamentos especializados, nós precisamos habilitar um recurso conhecido como Supplemental Logging para extrair o máximo de informações dos nossos logs.

Preparando Nossas Ferramentas: Ativando o Supplemental Logging

Vamos iniciar nossa jornada! Primeiro, precisamos ajustar nossas ferramentas de mineração. Execute o seguinte comando para ativar o Supplemental Logging:

image 44
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
SQL
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

Dessa forma, garantimos que todas as mudanças importantes sejam registradas com detalhes extras, permitindo que o LogMiner reconstrua transações de maneira precisa.

Agora, vamos conferir se tudo está funcionando direitinho:

image 45
SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE
SQL
SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

Se o resultado for ‘YES’, estamos prontos para extrair informações valiosas! Atualizando a Tabela de Teste

image 46
select  from tbl_teste_tab ORIGINAL
SQL
select * from tbl_teste_tab;

Acima vemos a tabela em seu estado original, vamos aplicar uma atualização

image 47
UPDATE TBL_TESTE_TAB

Agora é hora de atualizar o espaço de exploração! Como mineradores experientes, precisamos de um lugar renovado para testar nossas habilidades. Com o usuário ‘USR_BICUDO’, vamos atualizar uma tabela chamada ‘TBL_TESTE_TAB’ só que neste momento repare que não foi executar o commit para preservar a informação no RedoLog amos ao exemplo:

SQL
UPDATE tbl_teste_tab SET description = 'Test_description_1' WHERE id = 1;
UPDATE tbl_teste_tab SET description = 'Test_description_3' WHERE id = 3;
UPDATE tbl_teste_tab SET description = 'Test_description_5' WHERE id = 5;

Aspectos Técnicos do Nosso Equipamento de Mineração

Antes de iniciarmos a escavação propriamente dita, vamos entender melhor as capacidades do nosso equipamento:

Alimentação com Redo e Archive Logs

O LogMiner é como uma máquina de mineração versátil que pode trabalhar tanto com material recém-extraído (redo logs atuais) quanto com material já processado e armazenado (arquivos de archive). Essa flexibilidade permite que foquemos apenas nos períodos específicos que desejamos analisar, economizando energia e recursos que no caso deste labiratório estamos extraindo os RedoLogs

Análise de Transações Não Commitadas

Uma das funcionalidades mais interessantes do nosso equipamento é a capacidade de analisar amostras ainda em processamento – as transações não commitadas. Conseguimos visualizar o que está acontecendo antes mesmo da finalização, como se pudéssemos ver o minério sendo extraído em tempo real.

Localizando Nossos Registros: Analisando os Logs Redo

Como bons exploradores, precisamos saber onde estão nossos diários de registro. Vamos executar o seguinte comando para localizar os arquivos de log redo:

image 48
V$LOGFILE
SQL
SELECT l.GROUP#, l.SEQUENCE#, l.STATUS, lf.MEMBER FROM V$LOG l JOIN V$LOGFILE lf ON l.GROUP# = lf.GROUP#;

O que está acontecendo:

A consulta une as duas views, relacionando os grupos com seus respectivos membros por meio da coluna GROUP#.

O resultado mostra:

  • GROUP#: Identifica o grupo ao qual os redo logs pertencem.
  • SEQUENCE#: Indica o número de sequência do log dentro do grupo, representando a ordem de operações registradas.
  • STATUS: Define o estado do grupo (como CURRENT para o grupo ativo ou INACTIVE para aqueles disponíveis para reutilização).
  • MEMBER: Aponta o caminho dos arquivos físicos de cada grupo.

Com essa consulta, você está monitorando o estado dos redo logs e verificando quais arquivos estão em uso ou disponíveis. Esse tipo de análise é fundamental para entender o funcionamento da recuperação e da escrita de logs no Oracle Database.

Assim sendo, podemos montar o comando no qual vai fará a mineração.

image 49
DBMS_LOGMNR.ADD_LOGFILE REDOLOG
SQL
BEGIN
    DBMS_LOGMNR.ADD_LOGFILE(
        OPTIONS => DBMS_LOGMNR.ADDFILE,
        LOGFILENAME => '/u02/oradata/orcl/ORCL/onlinelog/o1_mf_1_mybfz7bb_.log'
    );
END;
/

Esse comando adiciona um redo log file específico à lista de arquivos que o LogMiner analisará.

O que está acontecendo:

  • DBMS_LOGMNR.ADD_LOGFILE: Procedimento usado para registrar um arquivo de log no LogMiner.
  • LOGFILENAME: Especifica o caminho completo do arquivo de log que será incluído para análise. Neste caso, é um arquivo de redo log online.
  • OPTIONS => DBMS_LOGMNR.ADDFILE: Define que esse é um novo arquivo a ser adicionado, complementando a lista de arquivos para mineração.

Após a execução, o LogMiner estará preparado para processar e interpretar os dados do arquivo de log especificado. É como adicionar mais uma galeria à nossa mina de dados para exploração.

image 51
START_LOGMNR
SQL
EXECUTE DBMS_LOGMNR.START_LOGMNR( -
    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

Estamos acionando o LogMiner para começar a escavação. Aqui, escolhemos utilizar o catálogo online do banco de dados como referência para o dicionário de dados. Esse dicionário funciona como o mapa que guia nossa expedição. É como se estivéssemos consultando uma cartografia recém-atualizada, garantindo que todas as formações da mina sejam interpretadas de forma precisa e eficiente.

Quando utilizamos a opção, estamos indicando ao LogMiner que ele deve buscar as informações de estrutura do banco diretamente no catálogo atual, sem a necessidade de extrair um dicionário previamente. Isso torna o processo mais ágil e permite que possamos nos concentrar rapidamente na análise dos dados de interesse.

É importante destacar que essa escolha é extremamente prática, mas possui uma condição essencial: o banco de dados onde estamos rodando o LogMiner deve ser o mesmo que gerou os arquivos de log redo. Caso contrário, seria como tentar usar o mapa de uma mina que pertence a outra localização—algo que inevitavelmente levaria a informações incoerentes e resultados imprecisos.

Com o LogMiner ativado, estamos prontos para começar nossa análise e descobrir as preciosas informações escondidas nos logs redo. Prepare-se para explorar os caminhos traçados pelo banco de dados e desenterrar transações valiosas que contarão a história do que aconteceu em nosso ambiente!

Analisando Nossas Descobertas

Agora que nosso equipamento está funcionando, vamos analisar o que encontramos. Vamos filtrar para ver apenas as operações realizadas pelo nosso minerador ‘USR_BICUDO’:

image 53
V$LOGMNR_CONTENTS

Esse comando realiza uma análise detalhada das operações registradas nos logs redo, com foco nas atualizações realizadas por um usuário específico.

Consultar a view dinâmica V$LOGMNR_CONTENTS, que exibe informações das transações registradas nos logs redo ou archive que estão sendo processados pelo LogMiner.

WHERE username = ‘USR_BICUDO’ Limita os resultados às ações do usuário especificado, neste caso, USR_BICUDO
timestamp > SYSDATE – 1/24 Restringe as transações às últimas horas (1 hora no exemplo), destacando ações recentes.

Colunas Selecionadas:

  • username (USR): Identifica o usuário responsável pela operação.
  • XIDUSN || ‘.’ || XIDSLT || ‘.’ || XIDSQN` (XID): Monta o identificador único da transação.
  • SQL_REDO: Exibe o comando que recria a operação, como os updates realizados.
  • TIMESTAMP: Indica o momento exato da execução.

Os registros mostram que o usuário realizou operações de UPDATE na tabela, alterando o valor da coluna. Esse comando é excelente para auditar as movimentações feitas pelo usuário movimentações estas comitadas ou não.

Exploramos assim a capacidade do Oracle LogMiner de extrair informações valiosas dos Redo Logs, incluindo operações não commitadas. Equipados com passos práticos, compreendemos como habilitar o Supplemental Logging, preparar os logs para mineração e interpretar as transações realizadas no banco de dados.

Mais do que uma ferramenta técnica, o Oracle LogMiner revelou-se uma verdadeira mina de dados, permitindo a visualização detalhada de mudanças e ações no banco de dados antes mesmo de serem finalizadas. Isso destaca sua relevância como um recurso essencial para auditorias, análises forenses e recuperação de informações críticas.

Para o leitor, a jornada descrita neste artigo traz não apenas o domínio de uma técnica poderosa, mas também a possibilidade de enxergar os Redo Logs sob uma nova perspectiva: como registros ricos em histórias e insights. Espero que este conteúdo tenha contribuído para ampliar seu conhecimento sobre o Oracle LogMiner, abrindo caminho para aplicações ainda mais criativas e estratégicas em seus projetos. Que esta ferramenta seja usada como uma aliada indispensável em sua exploração do universo dos bancos de dados!

Tercio Haring

Tercio Haring

Tércio Haring é pai do Max e um entusiasta incansável de TI. Sua paixão pelo próximo o levou a ser socorrista, sempre pronto para ajudar. No universo da tecnologia, seu objetivo vai além de simplesmente compartilhar conhecimento; ele busca manter sua mente conectada ao futuro e abraçar os desafios como oportunidades disfarçadas. Escreve com o objetivo de tornar o complexo mundo dos bancos de dados mais acessível e compreensível, sempre com um toque de humor para tornar a jornada mais leve e divertida. Se você procura insights valiosos, explicações claras e, claro, algumas boas risadas, Tércio é a pessoa certa para te guiar. Junte-se a ele para explorar, aprender e crescer nesse vasto e fascinante universo Oracle!

Prestigie o autor e deixe o seu comentário:

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress