Hoje de manhã tava dando uma olhada no blog do Portilho, e ele postou um script sobre o utilitário LogMiner da Oracle… Fui testar no meu note e só deu erro!
O primeiro problema: Minha base não estava em archive mode.
Foi resolvido assim:
1º – Fechando o banco de dados
ALTER DATABASE CLOSE;
2º – Alterando para modo archivelog
ALTER DATABASE ARCHIVELOG;....
3º- Derrubando a instância e subindo o banco em seguida:
SHUTDOWN; STARTUP OPEN;
Depois, verifiquei os parâmetros de arquivamento através dos comandos:
ARCHIVE LOG LIST SHOW PARAMETER ARCHIVE
Como o arquivamento automático estava ativado, procurei algum documento no meu note *.ARC … nada… Pelo o que eu me lembrava, no Oracle 10G o padrão era arquivar os redo logs no diretório flash_recovery_area …
É claro que não haveria nada! Tem que ter alternância de logs para haver arquivamento!
Para forçar a alternância:
ALTER SYSTEM SWITCH LOGFILE;
(poderia ter usado o comando ALTER SYSTEM ARCHIVE LOG CURRENT)
Pronto! Depois disto, o Oracle criou a pasta ARCHIVELOG dentro da minha RECOVERY_AREA, e não é que lá estavam os preciosos *.ARC !!!
FINALMENTE O LOGMINER
Agora, com material para minerar, utilizei os scripts abaixo (como SYS):
EXEC DBMS_LOGMNR.ADD_LOGFILE('C:\oracle\product\10.2.0\flash_recovery_area\DBABUNAI\ARCHIVELOG\2009_01_05\O1_MF_1_117_4P4RRM4N_.ARC'); EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.COMMITTED_DATA_ONLY); SPOOL C:\LOGMINER_RESULT.TXT SELECT SQL_REDO FROM V$LOGMNR_CONTENTS WHERE SQL_REDO IS NOT NULL ; EXEC DBMS_LOGMNR.END_LOGMNR; SPOOL OFF
Com isso, consegui visualizar em um arquivo de texto o conteúdo dos redo logs. Prometo que depois explicarei em detalhes como esta poderosa ferramenta funciona, ok!
Gostaria de saber se o passo de utilização do Logminer em especifico funciona sem o banco esta em modo arquive, gostaria de fazer esse teste no banco da minha empresa porém com o .arc de um cliente.
No cliente o banco esta no modo arquive.
O LogMiner serve para formatar o conteúdo dos logs arquivados (archive). Por isso, em algum momento o banco deverá estar em archive mode, para gerar os arquivos *.arc.
No seu caso, isto não será possível inicialmente devido ao DBID (número de identificação do banco de dados, que é único e gerado na instalação) do cliente, que é diferente do banco da sua empresa.
Quando é executado o comando EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG o Oracle procura no dicionário de dados do banco uma “tradução” para o nome dos objetos, colunas, etc do banco. É neste ponto que dará erro, pois o conteúdo do dicionário de dados é diferente de banco para banco (aí está incluso o DBID).
Eu fiz este teste aqui na empresa: peguei um archive do banco de testes e rodei na base do meu note. Veja o resultado:
*
ERRO na linha 1:
ORA-01295: incompatibilidade de DB_ID entre o dicionário USE_ONLINE_CATALOG e
os arquivos de log
ORA-06512: em “SYS.DBMS_LOGMNR”, line 58
ORA-06512: em line 1
Qualquer coisa, um dos sites que usei como referência:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/logminer.htm#sthref1882
Até mais,
Lílian
Parabens pelo seu BLOG, foi de muita importancia saber sobre o TIMESTEN e assim que tiver mais informações sobre, publique… pode ter certeza que estarei dando muita atenção.
Forte abraço
Denilson