Migração de Oracle para PostgreSQL: como planejar sem perder dados
Guia técnico para migrar de Oracle para PostgreSQL: diferenças de PL/SQL, tipos de dados, fases do projeto, testes e checklist de corte.
Migrar de Oracle para PostgreSQL costuma começar por uma decisão de custo, mas vira um projeto de engenharia. Licenciamento, suporte e dependência de fornecedor pesam no orçamento; em troca, a migração exige cuidado com código, dados e operação. Este guia resume o que realmente importa para fazer o corte sem perder dados.
Quando a migração faz sentido
A conta não é apenas licença. Vale avaliar a migração quando o custo total do Oracle limita o investimento em produto, quando a versão em uso perdeu suporte ou quando a empresa quer padronizar tecnologia e reduzir dependência de um único fornecedor.
- Contrato de licenciamento ou suporte com custo crescente
- Versão do Oracle sem atualização de segurança
- Necessidade de reduzir o custo total de propriedade
- Padronização em tecnologias abertas e contratação mais fácil
- Projetos novos que podem nascer diretamente no PostgreSQL
O que muda na prática
PL/SQL e objetos de banco
Packages, procedures, funções, triggers e jobs precisam ser reescritos para PL/pgSQL ou para a linguagem da aplicação. Não é tradução linha a linha: tratamento de exceção, cursores, tipos compostos e recursos proprietários do Oracle não têm equivalente direto.
Tipos de dados e particularidades
- NUMBER sem escala: validar precisão e escolher numeric, bigint ou integer
- DATE do Oracle guarda data e hora; no PostgreSQL, date e timestamp são tipos distintos
- VARCHAR2 vira varchar ou text, conforme o uso
- Sequences e identity têm comportamentos diferentes em cache e concorrência
- ROWNUM, CONNECT BY, DUAL e funções como NVL exigem reescrita
- NLS, charset e ordenação podem alterar comparações e relatórios
As cinco fases de uma migração segura
- Inventário: mapear schemas, volumetria, objetos, integrações, jobs e consultas críticas.
- Plano por ondas: dividir a migração em etapas com critério de aceite e janela definida.
- Conversão e testes: ajustar esquema e código, rodar cargas e comparar resultados com o ambiente de origem.
- Corte controlado: sincronizar a última alteração, executar a janela e validar o sistema com plano de rollback.
- Estabilização: acompanhar as primeiras semanas, corrigir planos de execução, índices e parâmetros que só aparecem com a carga real.
-- Comparação de volumetria e integridade após carga
SELECT schemaname, relname, n_live_tup
FROM pg_stat_user_tables
ORDER BY n_live_tup DESC;Erros que mais atrasam o projeto
- Subestimar procedures, packages e jobs do banco
- Testar apenas com dados de homologação muito menores que produção
- Ignorar diferenças de collation, timezone e formatos de data
- Não medir o tempo de cópia e de sincronização incremental
- Deixar o rollback para o dia do corte
- Não envolver a equipe da aplicação na validação
Checklist antes do corte
- Backup completo e restauração testada no destino
- Contagem e checksum das tabelas críticas conferidos
- Procedures e funções com testes automatizados ou roteiro validado
- Plano de rollback documentado e ensaiado
- Janela comunicada e responsáveis disponíveis
- Monitoramento ativo nas primeiras 48 horas
Conclusão
Oracle e PostgreSQL resolvem problemas parecidos com modelos diferentes. A migração dá certo quando o time trata código, dados e operação como partes do mesmo projeto, com inventário, testes e corte planejado. Se você está avaliando o caminho, um diagnóstico técnico de 30 minutos já mostra os maiores riscos do seu ambiente.
Precisa de ajuda com este tema?
A PostDB atua com DBA gerenciado, migração, tuning e alta disponibilidade para PostgreSQL. O diagnóstico inicial de 30 minutos é gratuito.
Perguntas frequentes
É possível migrar procedures Oracle para PostgreSQL automaticamente?
Ferramentas ajudam a converter a estrutura, mas procedures e funções quase sempre exigem revisão manual. PL/SQL e PL/pgSQL têm diferenças de sintaxe, tratamento de exceções, cursores, pacotes e tipos. O código precisa ser testado com dados reais.
A migração de Oracle para PostgreSQL exige parada do sistema?
Na maioria dos casos, apenas a janela final de corte exige parada. A cópia inicial, a conversão e os testes acontecem em paralelo, com sincronização incremental até a virada.
Quanto tempo leva uma migração?
Depende do volume, da quantidade de objetos e das integrações. Projetos menores podem levar semanas; ambientes com muitas regras de negócio em PL/SQL podem levar meses. O cronograma sai depois do inventário técnico.
Continue lendo
PostgreSQL lento: 7 causas comuns e como diagnosticar
Um roteiro prático para descobrir por que o PostgreSQL está lento sem sair criando índices e mudando parâmetros no escuro.
Alta disponibilidadeAlta disponibilidade no PostgreSQL: replicação, Patroni e failover
Réplica configurada não é alta disponibilidade. Entenda o que precisa ser testado para uma falha de servidor não virar indisponibilidade.