Sincronizar Oracle com PostgreSQL

Sync · · 4 min de leitura

Mova os dados uma vez e depois mantenha o PostgreSQL em dia com o Oracle: por um app Windows ou pela linha de comando, sem cliente Oracle para instalar e sem nada para configurar no servidor Oracle.

Quando esta é a ferramenta certa

  • Uma cópia em PostgreSQL para relatórios ou para uma nova aplicação, que precisa acompanhar um sistema de registro em Oracle.
  • Uma migração de Oracle para PostgreSQL com virada longa: o Oracle continua em produção por semanas e o PostgreSQL precisa se atualizar toda noite até a troca.
  • Sair do Oracle tabela por tabela, mantendo em dia as tabelas já migradas enquanto o resto espera.
Aba Synchronize do dbSlice

Como uma sincronia funciona

  1. Escolha a tabela de origem ou um SELECT no Oracle e a tabela de destino no PostgreSQL.
  2. Escolha a coluna-chave usada para casar as linhas. O dbSlice lê o Oracle em lotes pequenos, para a produção continuar atendendo os usuários enquanto a sincronia roda.
  3. Escolha o que a execução faz no destino:
    ModoO que faz
    UpsertInsere as chaves novas e atualiza as que mudaram
    Insert newInsere só as chaves que faltam; as linhas existentes não são tocadas
    Initial loadInserts simples numa tabela vazia
    Update onlyAtualiza as linhas que já existem
    Full reloadEsvazia a tabela de destino e carrega de novo
  4. Opcional: mapeie colunas com nomes diferentes, acrescente um filtro WHERE, mascare valores sensíveis durante a cópia.
  5. Confira antes de gravar. O Record Diff compara as chaves dos dois lados (quantas são, quais faltam).
  6. Rode, ou salve como job e rode pela CLI ou pelo Agendador de Tarefas do Windows.

Execuções incrementais no Oracle

Aponte o job para uma coluna que só cresce: uma data ou timestamp LAST_UPDATED mantida pela aplicação, ou um id preenchido por uma sequence. Cada execução lembra o maior valor lido, e a seguinte só lê as linhas acima dele. Junto com o Upsert, uma atualização noturna lê o que mudou em vez da tabela inteira.

Dois detalhes do Oracle:

  • DATE guarda hora. Uma coluna DATE do Oracle guarda horas, minutos e segundos; então serve como coluna incremental, desde que a aplicação a atualize a cada mudança.
  • Exclusões não aparecem. Uma execução incremental não percebe linhas excluídas no Oracle. Agende uma comparação completa periódica (Record Diff) ou uma recarga completa.

Tipos, num parágrafo

Se a tabela ainda não existe no PostgreSQL, o dbSlice para antes de gravar e mostra um CREATE TABLE para o seu DBA: o DATE do Oracle como TIMESTAMP, o NUMBER sem precisão como NUMERIC simples, o VARCHAR2 como VARCHAR, o CLOB como TEXT. A tabela completa e os erros comuns estão no guia de migração de Oracle para PostgreSQL.

O seu banco continua seu

Por padrão, o dbSlice só lê e grava linhas. Ele não cria tabelas, triggers nem objetos temporários nos seus bancos, e não instala nada no servidor Oracle. Para o Upsert e o Insert new no PostgreSQL existe um modo de gravação mais rápido, que precisa de uma tabela temporária na sessão; ele vem desligado e você só o liga se o seu DBA permitir tabelas temporárias.

O que o dbSlice não faz

  • Ele move dados, não código. Packages, procedures e triggers em PL/SQL não são convertidos.
  • Não é replicação em tempo real. As execuções são jobs em lote (sob demanda ou agendados). Se você precisa de captura de mudanças em menos de um segundo, procure ferramentas de CDC por log.

Perguntas frequentes

Preciso do Oracle Instant Client ou de alguma mudança no servidor Oracle?

Não. O dbSlice conecta com host, porta, service name e usuário, e só lê.

Com que frequência ele pode rodar?

Com a frequência que você agendar o job: toda noite é a escolha comum durante uma migração. Cada execução incremental lê só as linhas acima do último valor visto.

O que acontece com as linhas excluídas no Oracle?

As execuções incrementais não as enxergam. Use o Record Diff ou uma recarga completa num agendamento, ou antes da troca.

Posso mascarar dados pessoais no caminho?

Sim. Campos sensíveis podem ser mascarados durante a cópia, com chaves e chaves estrangeiras preservadas.

Também serve para

Oracle para SQL Server, MySQL, MariaDB, Firebird, SQLite ou InterSystems IRIS, e PostgreSQL de volta para o Oracle. Para uma migração única, leia o guia de migração de Oracle para PostgreSQL.

Ainda não usa o dbSlice?
Experimente a versão gratuita da Microsoft Store: ela conecta, navega pelos dados, compara estruturas e exporta para CSV.

Experimente grátis Veja as demonstrações

Em produção há mais de 6 anos · Garantia de 14 dias · Roda na sua máquina