Migração de Aplicações Oracle para PostgreSQL

Equipe da Dominus Tech analisando arquitetura de migração de aplicações Oracle para PostgreSQL, com fluxos de APIs, bancos de dados, testes e validação.
Equipe da Dominus Tech analisando uma arquitetura de migração de aplicações Oracle para PostgreSQL, incluindo APIs, bancos de dados, mapeamento de objetos, testes e validação.

Migração de Aplicações Oracle para PostgreSQL

Migração de Aplicações Oracle para PostgreSQL exige muito mais do que transferir tabelas, índices e dados de um banco para outro. A aplicação que foi desenvolvida considerando características específicas do Oracle também precisa ser analisada, adaptada, testada e validada para operar corretamente sobre PostgreSQL ou EDB Postgres Advanced Server.

Uma migração bem planejada considera simultaneamente o banco de dados, o código da aplicação, os drivers de conexão, as consultas SQL, procedimentos armazenados, integrações, relatórios, rotinas batch, mecanismos de autenticação, monitoramento, requisitos de desempenho e processos operacionais.

Esse trabalho é especialmente importante em ambientes corporativos porque uma aplicação pode continuar funcionando aparentemente bem após a migração e, ainda assim, apresentar problemas em determinadas transações, consultas críticas ou rotinas de processamento.

A EDB descreve a migração de aplicações como uma etapa específica da jornada de migração Oracle para PostgreSQL, envolvendo a atualização das interfaces da aplicação, strings de conexão e drivers, além da adequação de componentes que utilizam funcionalidades específicas do Oracle.


Equipe da Dominus Tech analisando arquitetura corporativa de migração de aplicações Oracle para PostgreSQL, com camadas de aplicação, APIs, serviços, bancos de dados, testes e validação.
Equipe da Dominus Tech analisando uma arquitetura de migração de aplicações Oracle para PostgreSQL, com foco em aplicações, APIs, bancos de dados, testes, validação e entrada em produção.

Por que migrar a aplicação é diferente de migrar o banco de dados?

O banco de dados representa apenas uma parte da arquitetura de uma solução empresarial. A aplicação normalmente contém regras e dependências que não aparecem simplesmente na estrutura das tabelas.

Entre os elementos que podem depender diretamente do Oracle estão:

  • Strings de conexão;
  • Drivers JDBC, ODBC, .NET ou OCI;
  • Consultas SQL específicas;
  • Funções e operadores proprietários;
  • Procedures e functions;
  • Packages;
  • Triggers;
  • Sequences;
  • Tipos de dados específicos;
  • Tratamento de exceções;
  • Transações;
  • Rotinas batch;
  • Relatórios;
  • Integrações com outros sistemas;
  • Ferramentas de administração e monitoramento.

Por isso, uma aplicação pode apresentar comportamentos diferentes mesmo quando os dados foram migrados corretamente.

A documentação da EDB destaca que a transformação de uma solução Oracle para PostgreSQL pode envolver a reescrita de consultas e procedimentos e a atualização das APIs da aplicação para utilização dos drivers PostgreSQL ou EDB.

O que deve ser avaliado antes da migração da aplicação?

Antes de alterar o código, é recomendável construir um inventário completo das dependências existentes entre a aplicação e o Oracle.

Mapeamento da arquitetura

O primeiro passo é identificar todos os componentes que acessam o banco de dados.

  • Aplicações web;
  • Aplicações desktop;
  • APIs;
  • Microsserviços;
  • Aplicações Java;
  • Aplicações .NET;
  • Aplicações legadas;
  • Processos batch;
  • Jobs;
  • Ferramentas de BI;
  • Relatórios;
  • Integrações externas;
  • Scripts de automação.

O objetivo é evitar que uma dependência seja descoberta somente durante o cutover.

Identificação das dependências Oracle

Também é necessário identificar quais componentes dependem de funcionalidades específicas do Oracle.

Entre os principais pontos de atenção estão:

  • Oracle SQL proprietário;
  • PL/SQL;
  • Packages;
  • Oracle-specific functions;
  • Oracle sequences;
  • Database Links;
  • Tipos de dados específicos;
  • Drivers proprietários;
  • OCI;
  • Oracle-specific error codes;
  • Hints;
  • Recursos de transação específicos.

Compatibilidade da aplicação com PostgreSQL

A compatibilidade deve ser analisada em diferentes camadas. Não basta verificar se a aplicação consegue abrir uma conexão com o PostgreSQL.

Camada de conexão

A primeira camada é a comunicação entre a aplicação e o banco.

É necessário revisar:

  • Driver utilizado;
  • String de conexão;
  • Host;
  • Porta;
  • Database;
  • Usuário;
  • Autenticação;
  • SSL/TLS;
  • Pool de conexões;
  • Timeouts;
  • Parâmetros específicos do driver.

Aplicações que utilizam padrões abertos de conectividade, como JDBC e ODBC, podem exigir principalmente alterações relacionadas à conexão e ao driver. Já aplicações fortemente dependentes de APIs proprietárias do Oracle podem demandar alterações mais significativas.

Camada SQL

A próxima etapa consiste em identificar consultas que utilizam sintaxe ou funcionalidades específicas do Oracle.

Exemplos de pontos que podem exigir revisão:

  • Funções específicas do Oracle;
  • Conversões de tipos;
  • Expressões de data e hora;
  • Tratamento de NULL;
  • Subconsultas;
  • Joins específicos;
  • Hints;
  • Paginação;
  • Funções analíticas;
  • Consultas utilizadas em relatórios;
  • SQL dinâmico.

Camada de lógica de negócio

Quando parte da lógica de negócio está implementada dentro do banco, a análise precisa incluir procedures, functions, packages e triggers.

Em determinadas arquiteturas, o esforço de migração pode ser reduzido utilizando recursos de compatibilidade Oracle disponíveis no EDB Postgres Advanced Server. A EDB informa que o produto possui compatibilidade integrada com diversos elementos utilizados em aplicações Oracle, incluindo PL/SQL, tipos de dados e objetos compatíveis.


Diagrama técnico em camadas mostrando aplicação, drivers, APIs, SQL, lógica de negócio e banco de dados na migração de Oracle para PostgreSQL.
Diagrama técnico da Dominus Tech destacando as camadas de aplicação, drivers, APIs, SQL, lógica de negócio e banco de dados que devem ser avaliadas durante uma migração Oracle para PostgreSQL.

Migração de aplicações Java

Aplicações Java são comuns em ambientes Oracle e frequentemente utilizam JDBC como camada de acesso ao banco.

Nesse cenário, a migração deve avaliar:

  • Driver JDBC;
  • JDBC URL;
  • Connection Pool;
  • Oracle-specific classes;
  • OracleTypes;
  • REF CURSOR;
  • Named Parameters;
  • Arrays e tipos estruturados;
  • Tratamento de exceções;
  • Transações;
  • Prepared Statements;
  • Consultas SQL.

Quando a aplicação utiliza exclusivamente recursos padronizados de JDBC, o processo tende a ser mais simples. Entretanto, aplicações que utilizam classes e extensões específicas do Oracle precisam passar por uma análise adicional.

A EDB disponibiliza um JDBC Connector com recursos destinados a facilitar a execução de aplicações originalmente desenvolvidas para Oracle em EDB Postgres Advanced Server.

Migração de aplicações .NET

Aplicações .NET podem apresentar dependências relacionadas ao driver utilizado para acessar o Oracle.

Durante a migração, devem ser analisados:

  • Oracle .NET Provider;
  • Classes específicas do driver;
  • Connection Strings;
  • Command Objects;
  • Parameters;
  • Tipos de dados;
  • Tratamento de exceções;
  • Transações;
  • Procedimentos armazenados.

Quando existem chamadas específicas do driver Oracle, essas chamadas precisam ser substituídas ou adaptadas para o mecanismo de conexão utilizado no ambiente PostgreSQL.

A documentação da EDB cita especificamente a necessidade de revisão de aplicações .NET que utilizam classes específicas do driver Oracle, substituindo-as pelas equivalentes disponibilizadas pelo driver EDB quando aplicável.

Migração de aplicações que utilizam OCI

Aplicações desenvolvidas utilizando Oracle Call Interface podem exigir atenção especial porque existe uma dependência direta de uma API proprietária.

Nesses casos, o trabalho pode envolver a substituição ou adaptação da camada de acesso ao banco.

A EDB disponibiliza o EDB OCL Connector para cenários em que aplicações baseadas em OCI precisam operar com EDB Postgres Advanced Server.


SQL Oracle dentro da aplicação

Um dos pontos mais importantes da migração é localizar SQL Oracle embutido no código da aplicação.

Esse SQL pode estar distribuído por:

  • Código Java;
  • Código C/C++;
  • Código .NET;
  • APIs;
  • Stored procedures;
  • Arquivos XML;
  • Arquivos de configuração;
  • Relatórios;
  • Scripts;
  • Jobs.

O problema é que muitas vezes essas dependências não estão documentadas formalmente.

Por isso, uma etapa importante é realizar análise estática do código e identificar padrões relacionados ao Oracle.

Exemplos de elementos que devem ser procurados

  • Funções Oracle;
  • Referências a schemas;
  • Hints;
  • Sequences;
  • Packages;
  • Database Links;
  • Chamadas PL/SQL;
  • Oracle-specific data types;
  • Classes específicas dos drivers Oracle;
  • Códigos de erro específicos.

PL/SQL utilizado pela aplicação

Quando a aplicação depende de PL/SQL, o processo de migração precisa considerar a lógica que permanece dentro do banco.

Isso inclui:

  • Procedures;
  • Functions;
  • Packages;
  • Triggers;
  • Exceptions;
  • Collections;
  • Dynamic SQL;
  • Oracle built-in packages.

Em PostgreSQL comunitário, parte dessas construções pode exigir conversão para PL/pgSQL ou outra abordagem compatível. Em EDB Postgres Advanced Server, determinados recursos de compatibilidade Oracle podem reduzir o volume de conversões necessárias.

Isso não significa que toda aplicação Oracle seja automaticamente compatível com EDB Postgres Advanced Server. A própria documentação da EDB ressalta que a compatibilidade não representa uma implementação integral de todas as funcionalidades do Oracle.


Estratégia para reduzir o impacto da migração

Uma migração empresarial deve evitar alterações indiscriminadas no código. O ideal é classificar as dependências conforme o nível de esforço necessário.

Categoria 1 — Compatibilidade direta

São componentes que podem continuar funcionando com poucas ou nenhuma alteração significativa após a mudança da camada de banco.

Categoria 2 — Ajustes de configuração

Inclui mudanças como:

  • Connection String;
  • Driver;
  • Porta;
  • Credenciais;
  • Pool de conexões;
  • Parâmetros de ambiente.

Categoria 3 — Alteração de código

Inclui funcionalidades que dependem diretamente do Oracle e precisam ser modificadas.

  • SQL proprietário;
  • Chamadas de APIs Oracle;
  • Classes específicas;
  • Tratamento de tipos;
  • Rotinas de acesso ao banco;
  • Procedimentos incompatíveis.

Categoria 4 — Redesenho

Algumas funcionalidades podem exigir uma mudança arquitetural em vez de uma simples conversão.

Isso pode ocorrer quando a aplicação depende de mecanismos altamente específicos do Oracle ou quando a migração é utilizada como oportunidade para modernização da arquitetura.


Testes da aplicação após a migração

O sucesso da migração não deve ser medido apenas pela capacidade de iniciar a aplicação.

É necessário validar o comportamento funcional e não funcional do sistema.

Testes funcionais

  • Login;
  • Cadastro;
  • Consulta;
  • Alteração;
  • Exclusão;
  • Processamento de transações;
  • Relatórios;
  • Rotinas batch;
  • Integrações;
  • Processamentos financeiros;
  • Rotinas críticas.

Testes de dados

Os resultados produzidos pela aplicação devem ser comparados com o comportamento do ambiente Oracle de referência.

Essa validação pode incluir:

  • Quantidade de registros;
  • Valores calculados;
  • Totais financeiros;
  • Relacionamentos;
  • Resultados de consultas;
  • Integridade referencial;
  • Processamentos batch.

Testes de desempenho

Também é necessário verificar se a aplicação mantém os níveis de desempenho esperados.

Devem ser avaliados:

  • Tempo de resposta;
  • Throughput;
  • Uso de CPU;
  • Memória;
  • Conexões;
  • Tempo das consultas;
  • Concorrência;
  • Operações de leitura;
  • Operações de escrita.

A migração pode alterar planos de execução, índices, estatísticas e comportamento de determinadas consultas. Portanto, uma aplicação que funciona corretamente pode ainda precisar de tuning após a mudança.


Estratégias de cutover da aplicação

A estratégia de entrada em produção deve ser definida antes da execução da migração.

Cutover tradicional

A aplicação é interrompida, os dados finais são sincronizados, o ambiente PostgreSQL é validado e a aplicação passa a utilizar o novo banco.

É uma abordagem relativamente simples, mas pode exigir uma janela de indisponibilidade.

Cutover com sincronização contínua

Em ambientes que exigem menor downtime, pode ser utilizada uma estratégia em que o PostgreSQL é mantido sincronizado com o Oracle durante parte do processo.

A EDB documenta o uso de mecanismos de snapshot e CDC para diferentes cenários de migração, incluindo o uso do EDB Replication Server quando a sincronização contínua é necessária.

Estratégia de rollback

Um plano de rollback deve existir antes do cutover.

Ele deve definir:

  • Critérios para abortar a migração;
  • Janela máxima para decisão;
  • Procedimento de retorno da aplicação;
  • Estado dos dados;
  • Sincronização entre ambientes;
  • Responsáveis pela decisão;
  • Comunicação aos usuários.

Diagrama de fluxo de cutover mostrando migração de Oracle para PostgreSQL/EDB, sincronização de dados, testes, validação, go-live e rollback.
Fluxo corporativo de cutover com sincronização de dados, testes da aplicação, validação, aprovação, entrada em produção e plano de rollback.

Migração de aplicações Oracle para PostgreSQL com EDB

O EDB Postgres Advanced Server pode ser considerado em projetos nos quais a compatibilidade com elementos Oracle é um requisito importante.

A EDB descreve uma série de recursos destinados a facilitar a jornada de migração, incluindo compatibilidade Oracle no banco, conectores, Migration Portal, Migration Toolkit, Replication Server e serviços especializados.

EDB Migration Portal

O Migration Portal pode ser utilizado para avaliar a compatibilidade de schemas Oracle e identificar objetos que precisam de conversão ou correção antes da migração.

EDB Migration Toolkit

O Migration Toolkit é uma ferramenta de linha de comando utilizada para migrar objetos e dados. A documentação atual informa suporte para migrações de Oracle para PostgreSQL e EDB Postgres Advanced Server.

EDB Replication Server

Quando o projeto exige sincronização contínua dos dados durante o período de transição, o Replication Server pode fazer parte da arquitetura de migração.

EDB Database Connectors

Os conectores EDB podem facilitar a adaptação de aplicações que dependem de determinados comportamentos e interfaces utilizadas em ambientes Oracle. A documentação da EDB lista conectores JDBC, ODBC, .NET e OCL para cenários de compatibilidade.


Como estruturar um projeto de migração de aplicações

Uma abordagem empresarial pode ser organizada em fases.

1. Inventário

Identificar aplicações, módulos, interfaces, bancos, drivers e integrações.

2. Assessment

Classificar as dependências Oracle e estimar o esforço de adaptação.

3. Prova de conceito

Migrar uma aplicação ou módulo representativo para validar a estratégia.

4. Conversão

Realizar as alterações necessárias no código, SQL, drivers e configurações.

5. Testes

Executar testes funcionais, integração, desempenho, segurança e volume.

6. Homologação

Validar a solução com as áreas técnicas e de negócio.

7. Cutover

Executar a transição planejada para o ambiente PostgreSQL.

8. Pós-migração

Monitorar desempenho, erros, consultas, conexões e comportamento da aplicação.


Principais riscos da migração de aplicações Oracle para PostgreSQL

  • Dependências Oracle não documentadas;
  • SQL proprietário oculto no código;
  • Uso de drivers específicos;
  • Dependências de PL/SQL;
  • Diferenças de tipos de dados;
  • Diferenças de comportamento entre bancos;
  • Consultas com desempenho diferente;
  • Integrações não identificadas;
  • Jobs externos dependentes do Oracle;
  • Relatórios com SQL específico;
  • Falhas descobertas somente em produção;
  • Rollback não planejado.

Como reduzir os riscos

A melhor estratégia é tratar a migração da aplicação como um projeto próprio dentro da migração de banco de dados.

Isso significa criar inventário, matriz de compatibilidade, ambiente de testes, critérios objetivos de aceitação e plano de rollback.

Também é recomendável priorizar as aplicações mais críticas e validar antecipadamente as funcionalidades que possuem maior dependência de Oracle.

Indicadores para acompanhar o projeto

  • Percentual de aplicações inventariadas;
  • Percentual de dependências Oracle identificadas;
  • Quantidade de componentes convertidos;
  • Quantidade de incompatibilidades encontradas;
  • Quantidade de incompatibilidades resolvidas;
  • Percentual de testes concluídos;
  • Taxa de sucesso dos testes;
  • Diferença de desempenho entre Oracle e PostgreSQL;
  • Tempo estimado de downtime;
  • Tempo efetivo de cutover;
  • Quantidade de incidentes pós-migração.

Migração de aplicações como parte da modernização tecnológica

A migração Oracle para PostgreSQL também pode ser utilizada como oportunidade para modernizar a arquitetura da aplicação.

Entretanto, é importante separar os objetivos. Uma migração de banco de dados já possui riscos próprios. Combinar simultaneamente uma migração de banco, refatoração completa da aplicação, mudança de arquitetura e transformação de infraestrutura pode aumentar significativamente a complexidade.

Uma estratégia mais controlada pode migrar primeiro o banco preservando o comportamento funcional da aplicação e, posteriormente, executar iniciativas de modernização.

Em outros cenários, quando a arquitetura atual possui dependências que dificultam a migração, uma modernização parcial pode ser necessária para remover essas dependências.


Quando utilizar PostgreSQL ou EDB Postgres Advanced Server?

A decisão deve considerar os requisitos técnicos e operacionais do projeto.

O PostgreSQL oferece uma plataforma open source robusta para aplicações corporativas. Já o EDB Postgres Advanced Server adiciona recursos de compatibilidade Oracle e capacidades empresariais que podem ser relevantes em projetos de migração.

Para aplicações fortemente dependentes de Oracle, os recursos de compatibilidade do EDB podem reduzir parte do esforço de conversão. Para aplicações que já utilizam SQL e APIs mais padronizados, PostgreSQL pode ser uma alternativa adequada.

A decisão deve ser tomada após assessment técnico, e não apenas com base no banco de dados de origem.


Conclusão

A Migração de Aplicações Oracle para PostgreSQL deve ser tratada como uma etapa estratégica de qualquer projeto de modernização de banco de dados. Migrar tabelas e dados é apenas parte do trabalho: a aplicação precisa continuar entregando as mesmas funcionalidades, integridade, segurança e níveis de desempenho esperados pelo negócio.

O caminho mais seguro envolve inventário das aplicações, identificação das dependências Oracle, análise de SQL e APIs, adequação de drivers, conversão dos componentes necessários, testes funcionais e de desempenho, homologação, planejamento do cutover e definição de rollback.

Em projetos com grande dependência do ecossistema Oracle, o EDB Postgres Advanced Server pode ser avaliado por seus recursos de compatibilidade e pelas ferramentas disponíveis para apoiar diferentes etapas da migração.

Para ambientes corporativos, a migração deve ser conduzida com uma visão integrada de banco de dados, aplicação, infraestrutura, segurança, operações e negócio.


Links Relacionados

Recursos Oficiais

FAQ — Perguntas Frequentes

É possível migrar uma aplicação Oracle para PostgreSQL sem reescrever todo o código?

Depende da arquitetura da aplicação. Sistemas que utilizam padrões de conectividade e SQL mais portáveis tendem a exigir menos alterações. Aplicações fortemente dependentes de APIs, SQL ou funcionalidades específicas do Oracle podem exigir adaptações maiores.

É necessário alterar o código Java durante a migração?

Nem sempre. É necessário analisar o driver JDBC, a string de conexão, as consultas SQL e eventuais classes ou recursos específicos do Oracle utilizados pela aplicação.

Aplicações .NET podem ser migradas de Oracle para PostgreSQL?

Sim. Porém, aplicações que utilizam componentes específicos do driver Oracle devem ser avaliadas e, quando necessário, adaptadas para o driver utilizado no ambiente PostgreSQL ou EDB.

O EDB Postgres Advanced Server ajuda na migração de aplicações Oracle?

Sim. O EDB Postgres Advanced Server possui recursos de compatibilidade Oracle que podem reduzir determinadas adaptações necessárias em aplicações e componentes de banco de dados. A compatibilidade, entretanto, não significa que todas as funcionalidades Oracle sejam suportadas.

O Migration Toolkit migra a aplicação?

Não. O Migration Toolkit é voltado principalmente à migração de objetos e dados do banco. A adaptação da aplicação envolve código, drivers, APIs, configurações, SQL, integrações e testes.

É possível migrar a aplicação com pouco downtime?

É possível estruturar estratégias para reduzir o downtime. Dependendo do cenário, mecanismos de sincronização contínua podem ser utilizados para manter os ambientes próximos durante a transição e reduzir a janela necessária para o cutover.

Como testar uma aplicação depois da migração?

É recomendável combinar testes funcionais, integração, dados, desempenho, segurança e volume, comparando os resultados com o comportamento esperado do ambiente de origem.

Qual é o maior risco na migração de uma aplicação Oracle?

Um dos principais riscos é a existência de dependências Oracle não identificadas antes da migração, especialmente SQL proprietário, APIs específicas, lógica PL/SQL, drivers e integrações.


Modernize seu Banco de Dados com a Dominus Tech
Dominus Tech Gold Partner EDB em ambiente corporativo de PostgreSQL, observabilidade, performance e infraestrutura crítica

Planeje, migre e modernize sua infraestrutura PostgreSQL com observabilidade, alta performance e suporte corporativo da Dominus Tech Gold Partner EDB.

👉 Planejando uma Migração Oracle para PostgreSQL?

A Dominus Tech é Parceira Gold da EnterpriseDB e apoia empresas em todas as etapas da modernização de bancos de dados Oracle para PostgreSQL. Nossa equipe atua em assessment, planejamento, análise de compatibilidade, arquitetura, migração, otimização de desempenho, alta disponibilidade, observabilidade e suporte especializado para ambientes PostgreSQL Enterprise.

✔ Parceira Gold da EnterpriseDB no Brasil

O planejamento adequado permite transformar uma migração complexa em um projeto estruturado, com riscos identificados, responsabilidades definidas, critérios de sucesso e estratégia de execução. A Dominus Tech pode apoiar sua organização desde a avaliação inicial até a estabilização do ambiente PostgreSQL em produção.


Entre em contato com nossos especialistas e solicite uma avaliação técnica do seu ambiente Oracle. Descubra a melhor estratégia para migrar para PostgreSQL com segurança, desempenho e redução de riscos.