Como posso transformar o log redo em uma atualização de visualização materializada?

1

Banco de dados 10gR2, na configuração do Data Guard para um standby físico e lógico.

Eu tenho uma visão materializada que faz uma atualização completa periodicamente de cerca de 40 mil registros de um banco de dados remoto. Ele está trabalhando em uma atualização por hora durante anos sem problema. Ontem me pediram para tornar a taxa de atualização consideravelmente mais freqüente, como, a cada 2 minutos. Eu fiz isso, sem problemas aparentes, até esta manhã, por volta das 4 da manhã, o diretório de log de arquivos preenchido.

Eu tenho lutado o dia todo tentando desativar o registro. Eu tenho:

  • defina NO FORCE LOGGING no banco de dados
  • alterou a visualização materializada e a tabela base para NOLOGGING
  • alterou os índices na exibição para NOLOGGING

Nada parece reduzir a taxa de geração de logs. A visualização é atualizada em uma tarefa agendada via dbms_refresh.refresh logo antes do procedimento em que a leitura é iniciada.

Eu sei que devo reformular o processo, provavelmente sugando os dados para uma tabela temporária global toda vez que o job for executado, mas isso vai demorar um pouco para passar pela fábrica de QA. Alguma idéia do que estou perdendo aqui? Pelo que consigo ler, parece que eu deveria ser capaz de fazer isso. Este artigo da asktom parece apoiar isso, mas Eu não consigo fazer isso funcionar.

Muito obrigado pelo seu tempo.

    
por DCookie 03.12.2010 / 23:29

1 resposta

2

Ahh, eu tropecei na solução. Em vez de dbms_refresh, use dbms_mview assim:

inicie dbms_mview.refresh ('MYTABLE', método = > 'C', atomic_refresh = > false); fim;

Eu encontrei a solução aqui .

Obrigado por procurar.

    
por 04.12.2010 / 00:30

Tags