Pergunta

Usando o Oracle 10g com nosso servidor de testes, qual é a maneira mais eficiente/fácil de fazer backup e restaurar um banco de dados para um ponto estático, assumindo que você sempre deseja voltar ao ponto determinado depois que um backup for criado.

Um exemplo de caso de uso seria o seguinte

  1. instalar e configurar todos os softwares
  2. Modifique os dados para o ponto de teste base
  3. faça um backup de alguma forma (isso faz parte da questão de como fazer isso)
  4. faça testes
  5. retornar ao estado da etapa 3 (restaurar de volta ao ponto de backup, esta é a outra metade da questão)

Idealmente, isso seria concluído através de sqlplus ou rman ou algum outro método programável.

Foi útil?

Solução

Você não precisa fazer um backup no horário base.Basta ativar o banco de dados de flashback, criar um ponto de restauração garantido, executar seus testes e fazer flashback para o ponto de restauração criado anteriormente.

As etapas para isso seriam:

  1. Inicialize a instância no modo de montagem.

    montagem forçada de inicialização;

  2. Crie o ponto de restauração.

    criar banco de dados de flashback de garantia de ponto de restauração before_test;

  3. Abra o banco de dados.

    alterar banco de dados aberto;

  4. Execute seus testes.

  5. Encerre e monte a instância.

    desligamento imediato;montagem de inicialização;

  6. Flashback para o ponto de restauração.

    banco de dados flashback para restaurar o ponto before_test;

  7. Abra o banco de dados.

    alterar banco de dados aberto;

Outras dicas

Você poderia usar um recurso do Oracle chamado Flashback que permite criar um ponto de restauração, para o qual você pode voltar facilmente depois de fazer o teste.

Citado no site,

O banco de dados flashback é como um 'botão de retrocesso' para o seu banco de dados.Ele fornece a recuperação do ponto de dados do banco de dados sem exigir que um backup do banco de dados seja restaurado primeiro.Quando você elimina o tempo necessário para restaurar um backup de banco de dados da fita, a recuperação do ponto de dados do banco de dados é rápida.

Pela minha experiência, a importação/exportação é provavelmente o caminho a percorrer.A exportação cria um instantâneo lógico do seu banco de dados, portanto você não o achará útil para grandes bancos de dados ou para requisitos de desempenho exigentes.No entanto, funciona muito bem para fazer instantâneos e outros enfeites para usar em várias máquinas.

Usei-o em um projeto Rails para obter um instantâneo do produto que poderíamos trocar entre os desenvolvedores para testes de integração e fizemos o trabalho dentro de scripts rake.Escrevemos um pequeno script sqlplus que destruiu o banco de dados e depois importou o arquivo de despejo por cima.

Alguns artigos que você pode querer verificar:Folha de dicas do OraFAQ Wikipédia da Oracle

A Oracle aparentemente não gosta mais de imp/exp em favor de bomba de dados, quando usamos a bomba de dados, precisávamos de coisas que não poderíamos ter (ou seja,Privilégios SYSDBA que não conseguimos obter em um ambiente compartilhado).Então dê uma olhada, mas não desanime se a bomba de dados não for sua praia, os antigos imp/exp ainda estão lá :)

Não posso recomendar o RMAN para esse tipo de coisa porque o RMAN exige muita configuração e precisará de configuração no banco de dados (ele também possui seu próprio banco de dados de catálogo para backups, o que é um problema para uma restauração bare metal).

Se você estiver usando um sistema de arquivos que suporte instantâneos de cópia na gravação, poderá configurar o banco de dados no estado desejado.Em seguida, desligue tudo e tire um instantâneo do sistema de arquivos.Em seguida, faça os testes e, quando estiver pronto para recomeçar, você poderá reverter o instantâneo.Isso pode ser mais simples do que outras opções, supondo que você tenha um sistema de arquivos que suporte instantâneos.

A solução @Michael Ridley é perfeitamente programável e funcionará com qualquer versão do Oracle.

É exatamente isso que eu faço, tenho um script que roda semanalmente para

  1. Reverter o sistema de arquivos
  2. Aplicar logs de arquivo de produção
  3. Obtenha um novo instantâneo FS "Pré-Mascaramento de Dados"
  4. Redefinir registros
  5. Aplique mascaramento de dados de "pré-produção".
  6. Obtenha um novo instantâneo "Post-Data-Masking" (permite a reversão para postar dados mascarados)
  7. Banco de dados aberto

Isso nos permite manter nossos bancos de dados de desenvolvimento próximos ao nosso banco de dados de produção.

Para fazer isso eu uso o ZFS.

Este método também pode ser usado para seus aplicativos ou até mesmo para todo o seu "ambiente" (por exemplo, você pode "reverter" todo o seu ambiente com um único comando (com script).

Porém, se você estiver executando o 10g, a primeira coisa que provavelmente desejará examinar é o Flashback, já que está integrado ao banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top