Pular para o conteúdo
  • Este tópico contém 13 respostas, 3 vozes e foi atualizado pela última vez 18 anos, 11 meses atrás por Marcio68Almeida.
Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Autor
    Posts
  • #79230
    vieri
    Participante

      Prezados amigos e DBA,
      Possuo um dataware house com dezenas de Materialized views
      Pórem gostaria de automatizar o processo de refresh, ja que
      essas tabelas são referenciadas por outras tabelas, ocasionando
      erro no job que é criado na criação da MV.
      Minha ideia é :
      criar um job com essas implementações:
      procedureDesabilitaconst + refreshdamv + procedureHabilitacons
      ja possuo as procedures de habilitar e desabilitar constraints.
      Porem naum sei como criar um job que faça essas
      3 tarefas respectivamente.
      Gostaria de algum help caso alguem ja tenha passado por isso.
      Um exemplo de um job que acesse uma procedure também me ajudaria.
      obs: o refresh seria semanal!

      Agradeço desde ja!
      grande abraços!

      Daniel
      DBA junior.

      #79232
      chduarte
      Participante

        Na verdade quando vc cria uma MView ele cria tambem o job automaticamente.

        Toda a manipulacao pode ser feita pela dbms_job ou dbms_mview.

        []

        #79233
        vieri
        Participante

          Vc naum entendeu minha duvida!!
          Os usuarios owner de um determinado schema fazem referencia a essas mviews!!
          Protanto na hora do refresh o job viola a constraint!!
          Preciso de um job que desabilite as fks ,faça o refresh dps habilite as mesmas!!

          Obrigado antecipadamente!

          #79234
          chduarte
          Participante

            Realmente nao entendi. A mview possui constraint? pq durante o refresh ela somente vai armazenar o resultado de uma query.

            Estranho.

            []

            #79235
            Marcio68Almeida
            Participante

              Você pode ter índices e FKs apontando para uma view materializada, porém quando a view for atualizada haverá um problema com as FKs.
              Não há como desabilitar as FKs e reabilita-las em seguida…
              Ou você usa sem as FKs ou cria uma tabela e faz um processo inteligente de atualização da mesma de forma que não fira a constraint…

              #79238
              vieri
              Participante

                Porque não há como desabilitar as FKs e reabilita-las em seguida…????
                Não entendi tal fundamento!
                Existe algum tipo de refresh que forçe isso… que não faça a
                verificação das constraints!
                A oracle devia ter um processo automatizado para isso, ja que eles permitem tal implementação!

                Obrigados por esses esclarecimentos mas preciso de + …

                abraços amigos e DBAs

                #79239
                Marcio68Almeida
                Participante

                  Quando a view materializada é atualizada, é um processo de zerar os dados da tabela e recria-los…
                  Você pode ter um processo que desabilite as FKs, snap shot e depois habilite as FKs… ,as tem que ser um processo manual…

                  #79242
                  vieri
                  Participante

                    Estou ciente desses conceitos, mais a minha ideia e automatizar
                    este processo.Criando um job extra:

                    exemplo:

                    begin
                    dbms_scheduler.create_job(
                    job_name => ‘ “SIA”.”REFRESH DAS MVS”,
                    job_type => ‘PL_SQL_BLOCK’,
                    Job_action => ‘begin execute sia.PR_DESABILITA_CONTRA_FK_MV;
                    end; begin execute
                    exec DBMS_MVIEW.REFRESH(‘sdc_dw_rep.MV_DW_ESPECIES_BENEFICIO’);end;
                    begin execute PR_HABILITA_CONTRA_FK_MV;end;’,
                    repeat_interval => ‘TRUNC(SYSDATE +1) + 5/24’,
                    enable => TRUE
                    job_class => ‘DEFAULT_JOB_CLASS’
                    end

                    estou começando a atuar agora na parte de jobs me ajudem em algum erro de sintaxe.
                    outra duvida eu posso ter varios executes dentro do job action?
                    ou devo executar uma procedure que faça todos estas execuções?

                    abraços

                    #79247
                    chduarte
                    Participante

                      Na verdade nunca ouvi falar em FK para view materializada ja que o conceito é para replicacao de dados ja existentes ou melhorar performance de relatorios.

                      []

                      #79249
                      vieri
                      Participante

                        A materialized view e uma table como qualquer outra para o ORACLE.
                        Pode conferir fazendo um select na DBA_OBJECTS.

                        Portanto o schema da aplicação pode usar uma mv como um tabela do seu schema.E ter constraints acessando a mesma.

                        A intençao da mv e evitar o uso de dblink que onera a aplicação ja que tem que buscar os dados em outro servidor.

                        Se alguem que entende de job é mv puder me ajudar.
                        thanks!

                        #79250
                        vieri
                        Participante

                          So para comprovar oque estou falando…

                          SQL> exec dbms_mview.refresh (‘SDC_DW_REP.MV_DW_CLIENTELA_BENEFICIOS’);
                          BEGIN dbms_mview.refresh (‘SDC_DW_REP.MV_DW_CLIENTELA_BENEFICIOS’); END;

                          *
                          ERROR at line 1:
                          ORA-12008: error in materialized view refresh path
                          ORA-02292: integrity constraint (SIA.FBCI_CLI_FK) violated – child record found
                          ORA-06512: at “SYS.DBMS_SNAPSHOT”, line 2255
                          ORA-06512: at “SYS.DBMS_SNAPSHOT”, line 2461
                          ORA-06512: at “SYS.DBMS_SNAPSHOT”, line 2430
                          ORA-06512: at line 1

                          eu posso desabiliar a fk na mão e depois o refresh funciona… mas são mta mvs + de 50. E DBA não e pedreiro pra ficar fazendo trabalho braçal.
                          Alguem tem uma solução.Um job que faça esse processo atraves de um PL-sql

                          #79251
                          chduarte
                          Participante

                            Realmente a MV é uma tabela mas acredito que nao seja esta a proposta dela.

                            Boa sorte com seu erro.

                            []

                            #79257
                            vieri
                            Participante

                              Já vi que niguem foi capaz de entender o problema a apresentar solução!
                              Vou queimar uma horas com pl-sql e job para realizar meu procedimento.
                              Concordo com vc meu caro.. a proposta naum é essa!
                              Mas em empresas grande e do governo existem tabelas corporativas que são mto dinamicas por causa das leis e tudo mais. Portanto tem que ser uma MV! Pra uma vez por semana ir busca as mudanças.

                              Encerro minha dúvida aqui… infelizmente não aprendi nada so ensinei!

                              abraços!!

                              #79260
                              Marcio68Almeida
                              Participante

                                Sua modéstia é realmente reconfortante…
                                Ninguém entendeu…
                                Só ensinei…
                                A sua dúvida foi entendida e não há ferramentas prontas que façam o que você deseja…
                                Se você esperava que alguém dsenvolvesse para você, foi muita ingenuidade da sua parte…
                                Se quer suporte da Oracle, tente no http://metalink.oracle.com

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