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

      Boa noite, sou novo no forum, estou trabalhando com oracle 10g a pouco tempo e tenho algumas dúvidas.

      Tenho uma grande dúvida sobre comparação de base de dados, estou desenvolvendo na minha máquina um sistema, e este está rodando com oracle 10g, semanalmente eu preciso atualizar uma outra máquina com este sistema.

      Estou atualizando a base de dados da seguinte forma.

      Criei um usuário novo no bd para a base de dados da outra máquina, vou nesta outra máquina, exporto os objects através das opções do plsql”Tools/Export User Objects”.

      Então seleciono manualmente todas as tabelas, views, functions, triggers, sequences que eu tenha desenvolvido, venho na minha máquina de desenvolvimento e importo estes objetos para um outro usuário, para desenvolvimento utilizo o usuário SYSTEM, e para a base a ser comparara utilizo o usuário que criei chamado COMPARA.

      Depois de importar os objetos utilizo a opção “Tools/Compare user objects” e então o pl gera para mim o scrip a ser executado para atualizar a outra base de dados.

      Gostaria de saber se não há outra forma mais fácil, porque essa forma é muito trabalhosa e perigosa pois algumas vezes esqueci de selecionar alguns objetos quando vou exportar e conseqüentemente resultou em problema depois.

      Fico grato com qualquer sugestão de programa ou método que utilizem para comparação de base de dados, comando, artigo ou qualquer forma, obrigado espero que possam me ajudar.

      #99442
      rman
      Participante

        Eddy

        Eu adoto a seguinte pratica, primeiramente, é necessário trabalhar com versionamento de sistema e versionamento de base, isso para você não se perder em qual versão está em produção.

        Todas as alterações da base, eu crio um script, por exemplo: CREATE TABLE, ALTER TABLE, CREATE INDEX, INSERT, UPDATE, DELETE, e etc.

        Então em toda atualização de sistema, se houver modificação da base, é enviado o arquivo de script para ser rodado na base de produção. Essa tarefa pode ser automatizada, criando uma tabela que guarde as informações da versão da base, e criando também uma aplicação que verifica a versão do banco e executa o script se necessário.

        Comparar os objetos do banco, para encontrar diferenças, e aplicar as modificações creio eu, que é muito complexo, isso até onde eu sei, talvez alguém tenha uma forma simples de fazer…

        O uso do versionamento, e da atualização automatica da base é importante. Hoje você tem um sistema pra atualizar, digamos que la na frente esse numero cresça, e você tenha 100 sistemas pra atualizar… Ai você já viu né…

        #99445
        Eddy
        Participante

          [quote=”rman”:7hr6o2w0]Eddy

          Eu adoto a seguinte pratica, primeiramente, é necessário trabalhar com versionamento de sistema e versionamento de base, isso para você não se perder em qual versão está em produção.

          Todas as alterações da base, eu crio um script, por exemplo: CREATE TABLE, ALTER TABLE, CREATE INDEX, INSERT, UPDATE, DELETE, e etc.

          Então em toda atualização de sistema, se houver modificação da base, é enviado o arquivo de script para ser rodado na base de produção. Essa tarefa pode ser automatizada, criando uma tabela que guarde as informações da versão da base, e criando também uma aplicação que verifica a versão do banco e executa o script se necessário.

          Comparar os objetos do banco, para encontrar diferenças, e aplicar as modificações creio eu, que é muito complexo, isso até onde eu sei, talvez alguém tenha uma forma simples de fazer…

          O uso do versionamento, e da atualização automatica da base é importante. Hoje você tem um sistema pra atualizar, digamos que la na frente esse numero cresça, e você tenha 100 sistemas pra atualizar… Ai você já viu né…[/quote]

          Essa prática de versionamento eu já adoto, o que não estou fazendo atualmente é criar um script para toda a alteração no banco que faço
          essa rotina que eu gostaria que fosse automatizada, porque são muitas alterações em um dia, o sistema não está completo então são tabelas criadas, alteradas, excluidas criação de views, sequences, não posso parar para anotar cada script, a única coisa que eu preciso é uma rotina automatizada que compare a minha base de dados com a do outro computador, ou outro usuário meu e me gere o script de diferenças.

          Essa prática do versionamento é fundamental mesmo quando há diversos sistemas, obrigado pela ajuda.

          #99476
          Emersonmartins
          Participante

            Sei que esse não é foco do grupo divulgar ferramentas.Mas existe uma ferramenta que eu utilizava quando trabalhava como analista de banco de uma equipe de desenvolvimento.

            Então consegui uma ferramenta chamada EMS DB Comparer.
            Muito boa e gera os scripts de várias maneiras, acredito que pode te ajudar.

            http://www.sqlmanager.net/en/products/o … shots/1772

            Emerson Martins
            Analista de Banco de Dados
            http://emersonmartinsdba.blogspot.com

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