Como lidar com a sincronização unidirecional de dois bancos de dados Oracle sem conexão de rede?

4

Aqui está a situação:

Eu tenho dois bancos de dados Oracle 10g (com as mesmas tabelas, etc.) que não podem ser conectados pela rede. Em alguns intervalos regulares (digamos, uma vez por dia) eu preciso ser capaz de atualizar os dados no banco de dados B para corresponder ao banco de dados A. O banco de dados B é somente para leitura, portanto não deve haver nenhuma alteração nos dados feitos nele.

Como não há conexão de rede entre eles, eu preciso criar algum tipo de arquivo daquele que pode ser levado para o outro e carregado facilmente. Gostaria de exportar esse arquivo e importá-lo para o outro banco de dados para ser o mais rápido possível ... de preferência, ele conteria apenas as informações mínimas necessárias sobre exatamente o que mudou desde a última sincronização.

Obviamente, eu poderia fazer uma exportação completa de um banco de dados e substituir o outro por seus dados. No entanto, isso levaria uma quantidade inaceitável de tempo. Eu também encontrei algumas coisas sobre exportação incremental, mas parece que está desatualizado e também exporta todos os dados em qualquer tabela que mudou. Isso seria problemático, pois uma tabela em particular (que é muito provável que mude) contém BLOBs grandes e levaria muito tempo para exportar e importar totalmente.

Eu não sou um DBA, então não tenho muita experiência nessa área. Existe alguma coisa bem adequada para fazer isso?

    
por ColinD 28.09.2010 / 18:59

2 respostas

1

Você pode considerar um banco de dados de reserva lógica como o cópia somente para leitura e remendar um processo manual de transferência de log de arquivamento que copia e registra todos os arquivos de log de cada intervalo de sincronização de sua mídia de transferência. Isso tem a vantagem de você estar usando apenas arquivos criados naturalmente pelo Oracle, e é um processo bastante rápido. Também não incorre em tempo de inatividade na espera lógica.

Uma seção útil que encontrei na documentação do Data Guard, que pode ser útil, é a seção sobre resolvendo lacunas de log de archive .

EDIT: Eu só notei que você não é um DBA. Você precisará da ajuda de um DBA competente para fazer isso, sem mencionar os privilégios necessários. No entanto, os DBAs mais competentes considerariam isso divertido; -)

    
por 29.09.2010 / 22:21
1

A solução mais simples é conectá-los através de uma rede sem rede. Uma maneira é ter os dois conectados ao mesmo armazenamento de back-end (ou seja, SAN / NAS) que permite que você compartilhe o mesmo volume ou permita que você replique o volume de um para o outro.

Além disso, isso realmente depende do tamanho do seu banco de dados e / ou do tamanho dos logs de transação, se você vai recorrer ao sneakernet ou RFC1149 para sincronizar seus bancos de dados.

Eu realmente questionaria o requisito "sem rede". Acho difícil acreditar que criar uma VPN ou outro túnel desse tipo não seja uma opção viável. Mesmo com os requisitos de PCI e SOX, existem permissões de conectividade de rede para backups e designs de cluster de alta disponibilidade.

    
por 28.09.2010 / 20:37