- Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 9 meses atrás por
Emersonmartins.
-
AutorPosts
-
1 de junho de 2011 às 3:02 am #99440
Eddy
ParticipanteBoa 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.
1 de junho de 2011 às 6:52 am #99442rman
ParticipanteEddy
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é…
1 de junho de 2011 às 3:45 pm #99445Eddy
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.
1 de junho de 2011 às 10:01 pm #99476Emersonmartins
ParticipanteSei 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 -
AutorPosts
- Você deve fazer login para responder a este tópico.