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

      Caros,

      Tenho um Banco Oracle 9.0.2.8 que roda um ERP fornecido por uma empresa parceira. Este banco possui um Schema que, devido a uma queda de energia(sem comentários) teve alguns de seus objetos perdidos. Dentre eles tables, functions, views, indexes, procedures, package /body, triggers.
      Após este incidente, houve queda de performance em alguns processos.
      Para resolver tal problema solicitamos da empresa responsável o modelo da base de dados. Após isto criei uma procedure que comparava os dois schemas e criava a DDL do objeto ausente.
      Até aí tudo bem…mas a minha dúvida é:

      Qual a melhor forma(estratégia) de inserir os objetos ausentes no schema “danificado”?

      Eu citei a queda de performance que poderia ser resolvida com a inserção dos índices perdidos, porém resolvi fazer o alinhamento total, inserindo todos os objetos.

      Gostaria de saber até que ponto esse processo influência na consistência dos dados já existente no banco?

      Após a inserção o cliente começou a questionar dizendo que havia algumas divergências…..

      Considerando que assim que criamos os objetos, os mesmos já começam a interagir com o sistema, o único objeto que atua de forma “automática” são as triggers. na comparação faltava apenas uma trigger e a mesma está desabilitada.

      Não vejo como os outros objetos inseridos influênciaram nesta ação uma vez que eles só atuam quando há uma chamada direta ou sitêmica. Informo que antes da inserção não houve nenhum erro de chamada de procedure ou package, consequentemente eles não eram chamados pelo sistema.

      Obrigado

      #85703
      Marcio68Almeida
      Participante

        Bom dia.

        É bastante improvável que, após uma queda de energia tabelas pudessem ser “perdidas”, é mais provável que a maioria dos objetos que você não encontrou realmente não existissem antes do incidente.
        É comum que índices e tabelas sejam corrompidas com uma queda de energia, neste caso pode-se recriar os índices, as tabelas necessitam de um trabalho mais específico.
        Ao recriar os índices você automaticamente melhorará a performace da aplicação.
        Os demais objetos, deve conversar com o pessoal que desenvolveu o projeto, é bem provável que eles realmente não devam ser incluídos em produção.
        Muito cuidado ao habilitar procedures e triggers, isso pode gerar problemas sem tamanho.

        #85705
        Ishii
        Participante

          Olá,

          Em primeiro lugar, acho que perder objetos no Oracle por causa de uma queda de energia é muito grave mesmo. Corromper dados ou índices já é grave mas nunca perdi metadados ou objetos mesmo (procedures, triggers etc). Acho que só isso já mereceria um estudo e até um chamado na Oracle.

          Em segundo lugar, com relação aos objetos a serem inseridos e como isso afeta a consistência dos dados, somente o FORNECEDOR do ERP pode (e deve) lhe informar e inclusive sugiro que ele acompanhe o processo, validando a criação dos objetos.

          Em terceiro lugar (last but not least), as triggers pode chamar procedures e packages e não sei como isso é chamado nelas mas no caso de SQL Dinâmico pode não ocorrer um erro explícito, pois o mesmo pode não ser tratado e com isso a trigger não ficaria inválida na falta destes objetos.

          Concluindo, sugiro que o fornecedor do ERP seja chamado e acompanhe esta atualização.

          []s Ishii

          #85716
          David Siqueira
          Participante

            OLá!!!
            Brother!!!.>Acho pouco provavel essa perda dos metadados por razões de queda de energia, corrupção de dados pode até ser, pelo fato da Instancia ter Sofrido DOWN de modo Abrupto, mais perder objetos, é dificil e praticamente impossivel, já passei por isso diversas vezes e nunca perdi objetos em si, mas tudo bem.
            Uma sugestão, se tu tiver um backup, que tal montar uma nova instancia identica subir um Import dos dados nessa base nova e fazer um pequeno DE-PARA entre sua base atual ( com perdas de objetos) e sua base comparativa, se você identificar falta de objetos entre ambas tire um DDL desses objetos e reponha-os na base de produção, lembrando que caso haja tabelas com dados nesse bolo de objetos perdidos, recomendo que tenha maiopr cuidado, visto que poderá comprometer a integridade e os relacionamentos entre as tabelas.

            Abcs.

            David

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