Estou interessado em saber quais métodos outras pessoas estão usando para acompanhar as alterações feitas no banco de dados, incluindo alterações de definição de tabela, novos objetos, alterações de pacotes etc. Você usa arquivos simples com um sistema de controle de versão externo? Gatilhos? Outro software?
oracle
oracle-11g-r2
version-control
Leigh Riffel
fonte
fonte
Respostas:
Nos sites em que trabalhei, quaisquer alterações que precisem ser feitas nas instâncias de produção devem ser scripts como scripts de alteração que serão executados no SQL * Plus; além disso, os scripts necessários para recriar todos os objetos de esquema do zero devem ser atualizados. Todos esses scripts são verificados no controle de alterações e são migrados de lá.
Você pode auditar alterações DDL ou usar gatilhos DDL para captar alterações ou até mesmo usar o software diff para comparar duas instâncias, mas esses métodos são indiscriminados; frequentemente, um desenvolvedor faz e desfaz várias alterações em um esquema (por exemplo, pequenas alterações de teste, criação de tabelas fictícias para testar conceitos etc.) antes de descobrir o que exatamente precisa ser alterado.
fonte
Eu pensei e li muito sobre este tópico. Este é um tópico amplo de controle de configuração e estratégia de gerenciamento de mudanças. O CMMI tem um domínio neste tópico. Mesmo em empresas que possuem uma acreditação do CMMI 3-5, às vezes elas não controlam seus bancos de dados de versão.
Esta pergunta deve ser respondida, mantendo em mente as seguintes restrições .
resposta 1
Essa abordagem funciona bem se tiver 6. Você coloca instruções DDL, que também é um código, no controle de origem e as mantém. Ninguém mudará os servidores de teste e produção sem a devida consideração.
Desvantagens é que, se você fizer alguma alteração nos servidores de produção ou teste, por qualquer motivo, uma correção rápida de bug, alteração da chave primária etc. Uma vez que realmente o servidor de desenvolvimento é a sua VERDADEIRA TERRA. Não o contrário.
Essa é uma abordagem muito orientada ao desenvolvedor. Mas quando você desenvolve um novo módulo, ele funciona muito bem.
Resposta 2 - se 1 e 6 são verdadeiros:
Uma abordagem semelhante à resposta 1 é manter um servidor de desenvolvimento. Todo mundo usa isso muda. Do que quando chega a hora de atualizar. Você usa uma ferramenta de comparação de banco de dados. Obtenha-os como scripts, coloque-os sob controle de origem.
A diferença entre a resposta 1 e a resposta 2 é que, na resposta 1, você coleta instruções DDL para todo o banco de dados e as armazena. Na resposta 2, você precisa armazenar todas as versões da mudança.
Se você colocar uma coluna em uma tabela e depois decidir removê-la. Seus scripts mostrarão isso na resposta2, enquanto na resposta1 você verá apenas a última versão. E você precisa comparar V2 e V1 para ver as diferenças. Pessoalmente, eu gosto mais da resposta 1, pois posso comparar facilmente Start e V3, V1 e V3. Na resposta 2, preciso procurar todas as alterações. Também na resposta 2, o script no controle de origem tende a ser um script complexo e complexo. Difícil de encontrar informações.
Resposta 3 Se 3 for verdadeiro. Observe que, nessa situação, você não possui restrição 6, ou seja: não possui servidores de desenvolvimento, teste e produto. Apenas servidor de produção. Você pode usar gatilhos DDL para registrar quais alterações foram feitas. Isso é usado principalmente para desencorajar as pessoas a abusar de suas concessões de DDL. Se ocorrer algum problema, você pode ser o responsável. Para que isso funcione, todas as pessoas devem se conectar à sua conta de usuário e a conta do Aplicativo não deve ter nenhuma concessão de DDL. Como todo desenvolvedor conhece a conta do Aplicativo e pode usá-lo.
Resposta 4 Se você possui 3 e 5. Observe que nessa situação você não possui uma restrição 6, ou seja: você não possui servidores de Desenvolvimento, Teste e Produto. Apenas servidor de produção. Em vez de acionar para armazenar alterações. Você usa uma ferramenta externa para localizar alterações e armazenar scripts DDL no controle de origem.
Se essa ferramenta tiver a capacidade de registrar quem fez alterações, seria útil. Observe que nesta solução você perde DDL extra, feito em intervalos.
fonte
Acabei de encontrar um tutorial interessante sobre o uso do Liquibase para a versão Oracle.
fonte
Em alguns de nossos bancos de dados, usamos gatilhos DDL para capturar alterações e salvá-las em uma tabela. Em seguida, temos uma interface da web para acessar essas versões anteriores. Ele tem graves inconvenientes, e é por isso que estou procurando alternativas, mas é fácil e é melhor do que nenhum controle de versão.
fonte
Usamos o Schema Version Control para nossos bancos de dados 11g, mas tivemos alguns problemas com o software na 11.2. Se não fosse pelos problemas com os quais ainda estamos trabalhando, seria um ótimo produto.
fonte
Costumávamos trabalhar com o Oracle SQL Designer, que (acho) foi substituído pelo SQL Developer Data Modeler agora. http://www.oracle.com/technetwork/developer-tools/datamodeler/overview/index.html
Isso foi muito legal, esp. a capacidade de definir DOMAINs para colunas e economizar muito tempo criando colunas comuns (mtime, ctime etc.).
fonte
Usamos o conjunto de ferramentas oracle-ddl2svn (do qual sou o autor) para armazenar automaticamente o esquema DDL do oracle no SVN.
fonte
Dê uma olhada no DBmaestro TeamWork, cujo banco de dados aplicou a abordagem de gerenciamento de alterações .
divulgação: trabalho para o dbMaestro
fonte
Eu nunca o usei, mas http://blog.gitora.com/ é outra opção.
fonte