Pular para o conteúdo
  • Este tópico contém 9 respostas, 4 vozes e foi atualizado pela última vez 17 anos, 2 meses atrás por David Siqueira.
Visualizando 10 posts - 1 até 10 (de 10 do total)
  • Autor
    Posts
  • #84341
    rhguimenes
    Participante

      Galera,

      blz??

      Qual a melhor forma de verificar o conteudo de *.redo?

      verificar quais forams os comandos salvos em um determinado arquivo.

      Tem como? Existe algum tutorial

      Vlwssss

      #84350
      joseniz
      Participante

        Após o arquivamento do redo log, ou seja, a partir dos archived logs é possível visualizar seu conteúdo usando o logminer.

        #84352
        rhguimenes
        Participante

          Obrigadooo!!

          Voce sabe algum tutorial bom?

          Abs

          #84353
          rhguimenes
          Participante

            Deixa eu reformular minha pergunta,

            Voce conhece alguma GUI para trabalhar com o logminer?

            Vlwss 🙂

            #84355
            rhguimenes
            Participante

              teste

              #84401
              Ricardo Portilho Proni
              Participante

                BEGIN
                DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => ‘/arch/archivelog.arc’, OPTIONS => DBMS_LOGMNR.NEW);
                DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.COMMITTED_DATA_ONLY);
                END;
                /

                SELECT * FROM V$LOGMNR_CONTENTS;

                BEGIN
                DBMS_LOGMNR.END_LOGMNR();
                END;
                /

                #84434
                joseniz
                Participante

                  Não lembro de nenhuma ferramena gráfica, talvez o Oracle Enterprise Manager (atualmente chamado de Database Grid Control) tenha essa função.

                  Antes de usar o logminer é necessário autorizar o RDBMS a acessar o diretório onde estão os archived logs (no init.ora, spfile.ora (para versão após o 8i) ou via ALTER SYSTEM): UTL_FILE_DIR = /arch

                  Antes de adicionar um archived log é necessário construir (build) o dicionário…

                  EXEC dbms_logmnr_d.build( dictionary_filename=>’/arch/dictionary.dic’, dictionary_location => ‘/arch’);
                  EXEC dbms_logmnr.add_logfile( logfilename => ‘/arch/database_1685.arc’, options => dbms_logmnr.NEW);
                  EXEC dbms_logmnr.add_logfile( logfilename => ‘/arch/database_1686.ARC’, options => dbms_logmnr.ADDFILE);
                  (podemos chamar a procedure add_logfile “n” vezes… uma por archived log)

                  Opcionalmente podemos definir o intervalo por data ou por system change number:
                  alter session set nls_date_format = ‘YYYY-MM-DD HH24:MI:SS’;

                  EXEC dbms_logmnr.start_logmnr( dictfilename => ‘/arch/dictionary.dic’, starttime => to_date(‘2003-06-23 08:25:00’, ‘YYYY-MM-DD HH24:MI:SS’));
                  ou
                  EXEC dbms_logmnr.start_logmnr( dictfilename => ‘/arch/dictionary.dic’, startscn => 288849030);

                  select * from v$logmnr_contents;

                  EXEC dbms_logmnr.end_logmnr;

                  Exemplos com filtros (em v$logmnr_contents):
                  alter session set nls_date_format = ‘YYYY-MM-DD HH24:MI:SS’;
                  col seg_type_name for a5
                  col seg_owner for a8
                  col seg_name for a20
                  col operation for a8
                  col username for a8

                  select substr(timestamp, 1, 16), seg_owner, seg_name, seg_type_name
                  , operation, session#, serial#, count(*)
                  from v$logmnr_contents
                  where operation in ( ‘UPDATE’, ‘INSERT’, ‘DELETE’ )
                  and seg_type_name = ‘TABLE’
                  group by substr(timestamp, 1, 16), seg_owner, seg_name, seg_type_name, operation, session#, serial#;

                  select scn, timestamp
                  , seg_type_name, seg_owner, seg_name, operation
                  , session#, serial#, username, count(*)
                  from v$logmnr_contents
                  where operation in ( ‘UPDATE’, ‘INSERT’, ‘DELETE’, ‘INTERNAL’ )
                  and seg_type_name = ‘TABLE’
                  group by scn, timestamp, seg_type_name, seg_owner, seg_name, operation, session#, serial#, username;

                  select seg_name, count(*)
                  from v$logmnr_contents
                  where seg_type_name = ‘TABLE’
                  and scn >= 288849044
                  and session# = 10 and serial# = 59379
                  group by seg_name;

                  #84437
                  Ricardo Portilho Proni
                  Participante

                    “Antes de usar o logminer é necessário autorizar o RDBMS a acessar o diretório onde estão os archived logs (no init.ora, spfile.ora (para versão após o 8i) ou via ALTER SYSTEM): UTL_FILE_DIR = /arch”.

                    Não, isto é necessário para acessar o arquivo de dicionário, desnecessário do 8.1.5 em diante.

                    “Antes de adicionar um archived log é necessário construir (build) o dicionário…”

                    Desnecessário do 8.1.5 em diante, basta usar o exemplo que coloquei, com DICT_FROM_ONLINE_CATALOG.

                    #84444
                    joseniz
                    Participante

                      Confesso que tive que rever meus conceitos sobre o logminer, por não lembrar de ter visto a opção dict_from_online_catalog.
                      Segundo o metalink e os manuais “PL/SQL User’s Guide and Reference” das versões 8.1.7 e 9.x, esta opção surgiu apenas no Oracle 9i (e não no 8.1.5).
                      Essa opção é util para informações não anteriores a 7 (sete) dias, após esse tempo devido a reutilização de alguns blocos nos control files será necessário construir um dicionário de dados em um arquivo flat (conforme a solução que postei). Além disso essa opção é valida somente quando se esta visualizando os archived logs no próprio banco de dados que os gerou.
                      O número de dias de armazenamento das informações de archived logs nos arquivos de controle podem ser expandidos via parâmetro CONTROL_FILE_RECORD_KEEP_TIME.

                      Após essa pesquisa refaço minhas respostas:
                      Sim, existe uma ferramenta gráfica para o logminer (nunca usei e não lembro de ter visto) ela é o LogMiner Viewer e esta disponível no Enterprise Manager.

                      Sim, é possível analisar o conteúdo do redo logs a partir da versão 9i (usando a opção dict_from_redo_logs), com as seguintes restrições:
                      – somente a partir do Oracle 9i (inclusive)
                      – o banco de dados deve estar em archivedlog mode
                      – o parâmetro COMPATIBLE deve estar definido como 9.0.x
                      – o dicionário e os redo logs devem pertencer ao mesmo banco de dados
                      – durante esse processo comandos DDL não podem ser excutados

                      1. execute DBMS_LOGMNR_D.BUILD(options => dbms_logmnr_d.store_in_redo_logs);
                      2. Use o procedimento DBMS_LOGMNR.ADD_LOGFILE para adicionar todos os redo logs a serem analisados
                      3. Inicie a analise:
                        execute DBMS_LOGMNR.START_LOGMNR(options => dbms_logmnr.dict_from_redo_logs);

                      O LogMiner ira montar o dicionário a partir dos arquivos de redo via procedimento DBMS_LOGMNR.ADD_LOGFILE.
                      Analise seu conteudo usando a visão V$LOGMNR_LOGS.

                      #84487
                      David Siqueira
                      Participante

                        Segue um How-to :
                        Versão 9i :
                        http://www.oracle-base.com/articles/9i/ … ents9i.php

                        Versão 8i :
                        http://www.oracle-base.com/articles/8i/LogMiner.php

                        Abraço!!!

                      Visualizando 10 posts - 1 até 10 (de 10 do total)
                      • Você deve fazer login para responder a este tópico.