Oracle SQL no PostgreSQL
Oracle SQL no PostgreSQL é um dos principais pontos de análise em projetos de migração Oracle para PostgreSQL Enterprise. Embora SQL seja baseado em padrões amplamente utilizados, Oracle e PostgreSQL possuem diferenças de sintaxe, funções, tipos de dados, comportamento e recursos específicos que precisam ser avaliadas durante a modernização de aplicações.
Para empresas que desejam migrar do Oracle para PostgreSQL, o objetivo não deve ser simplesmente substituir comandos SQL de forma automática. É necessário identificar quais instruções são compatíveis, quais precisam de ajustes e quais dependem de recursos específicos do Oracle.
O EDB Postgres Advanced Server possui um conjunto de recursos de compatibilidade Oracle justamente para reduzir o esforço de adaptação de aplicações durante migrações. A documentação da EDB apresenta comandos SQL, tipos de dados, funções e outros recursos compatíveis com Oracle.
Oracle SQL no PostgreSQL: conceitos fundamentais
O que significa migrar Oracle SQL para PostgreSQL?
Migrar Oracle SQL para PostgreSQL significa adaptar as instruções SQL utilizadas pelas aplicações, procedures, functions, views, jobs e demais componentes que dependem do banco de dados Oracle.
Em alguns casos, a instrução SQL pode ser utilizada praticamente sem alterações. Em outros, será necessário modificar a sintaxe ou substituir recursos específicos do Oracle por mecanismos equivalentes do PostgreSQL.
Em projetos corporativos, essa análise normalmente faz parte do assessment de compatibilidade e deve ser realizada antes da definição definitiva da arquitetura de destino.
Compatibilidade não significa identidade
PostgreSQL e Oracle são plataformas diferentes. Mesmo quando duas instruções executam uma operação conceitualmente semelhante, seu comportamento, sintaxe ou mecanismo interno pode ser diferente.
Por isso, uma estratégia profissional de migração trabalha com três categorias principais:
- SQL compatível.
- SQL que exige pequenas adaptações.
- SQL dependente de recursos específicos do Oracle.
SQL padrão e SQL específico do fabricante
Quanto mais uma aplicação utiliza SQL baseado em padrões, normalmente menor tende a ser o esforço de adaptação.
Por outro lado, aplicações desenvolvidas ao longo de muitos anos podem acumular grande quantidade de comandos específicos do Oracle.
Esses comandos podem estar relacionados a:
- Funções específicas.
- Tipos de dados.
- Operadores.
- Sintaxe proprietária.
- Hints.
- Sequences.
- Packages.
- PL/SQL.
- Views do dicionário de dados.
- Database Links.
- Recursos de administração.
Por que o SQL precisa ser avaliado antes da migração?
O código SQL representa uma das principais dependências entre uma aplicação e seu banco de dados.
Uma aplicação pode parecer independente do Oracle no nível da infraestrutura, mas possuir milhares de instruções SQL desenvolvidas especificamente para aquele ambiente.
Por isso, o assessment deve analisar não apenas tabelas e dados, mas também o código que utiliza esses dados.
Onde encontrar Oracle SQL?
- Aplicações corporativas.
- Stored procedures.
- Functions.
- Packages.
- Views.
- Triggers.
- Jobs.
- Scripts administrativos.
- Relatórios.
- Ferramentas de integração.
- Processos batch.
- ETL.
- APIs.
Oracle SQL e PostgreSQL Enterprise
Em um projeto de modernização, o destino pode ser PostgreSQL Community ou uma distribuição empresarial baseada em PostgreSQL.
Quando a aplicação possui forte dependência de recursos Oracle, o EDB Postgres Advanced Server pode ser considerado porque oferece recursos adicionais de compatibilidade Oracle. A documentação da EDB descreve EPAS como uma plataforma baseada em PostgreSQL que adiciona funcionalidades destinadas a aplicações Oracle e projetos de migração.

Principais diferenças entre Oracle SQL e PostgreSQL
Funções SQL
Funções são uma das áreas que mais frequentemente exigem análise durante uma migração.
Uma aplicação pode utilizar funções específicas do Oracle para trabalhar com strings, datas, números, conversões ou tratamento de valores nulos.
Quando uma função não possui o mesmo nome ou comportamento no PostgreSQL, ela precisa ser adaptada ou substituída.
Funções de data
Operações envolvendo datas merecem atenção especial.
Diferenças podem aparecer em:
- Conversão de datas.
- Formatação.
- Adição e subtração de períodos.
- Diferenças entre datas.
- Timestamp.
- Fuso horário.
- Arredondamento e truncamento.
Uma conversão aparentemente simples pode produzir resultados diferentes se o comportamento temporal não for validado.
NVL e tratamento de valores nulos
O Oracle utiliza amplamente a função NVL para tratar valores nulos.
No PostgreSQL, existem mecanismos equivalentes, como COALESCE, mas a conversão deve considerar o tipo de dado e a lógica original.
Durante uma migração, não é suficiente substituir mecanicamente um nome pelo outro. É necessário verificar se o resultado produzido permanece semanticamente equivalente.
DECODE e CASE
Aplicações Oracle também podem utilizar DECODE para implementar lógica condicional.
O PostgreSQL utiliza amplamente a expressão CASE para esse tipo de lógica.
Em projetos de conversão, a equipe deve avaliar cada ocorrência e validar o resultado funcional.
SYSDATE e funções de data
O Oracle utiliza SYSDATE em muitas aplicações para obter a data e hora do servidor.
No PostgreSQL existem funções equivalentes para trabalhar com data e hora, mas o comportamento e a semântica precisam ser analisados de acordo com o caso de uso.
Por que isso é importante?
Aplicações financeiras, sistemas de auditoria, processamento de eventos e processos batch podem depender diretamente da precisão temporal.
Uma adaptação inadequada pode gerar diferenças em relatórios, registros de auditoria ou regras de negócio.
Concatenação de strings
Operações de concatenação também devem ser revisadas.
O Oracle possui comportamentos específicos relacionados à concatenação e valores nulos. O EDB Postgres Advanced Server possui recursos de compatibilidade destinados justamente a aproximar determinados comportamentos do Oracle.
Sequences
Sequences são amplamente utilizadas em aplicações Oracle para geração de valores sequenciais.
O PostgreSQL também possui sequences, mas a forma de utilização pode variar.
Durante a migração, devem ser avaliados:
- Criação.
- Valor inicial.
- Incremento.
- Valor atual.
- Referências no código.
- Dependências de tabelas.
- Comportamento após carga de dados.
MERGE
O comando MERGE é outro ponto que deve ser analisado em projetos de conversão.
A compatibilidade de sintaxe e comportamento precisa ser avaliada de acordo com a versão e plataforma de destino.
O EDB Postgres Advanced Server inclui recursos de compatibilidade com Oracle relacionados ao MERGE, conforme sua documentação de compatibilidade.
Hints do Oracle
Hints são uma área especialmente sensível.
Aplicações Oracle podem utilizar hints para influenciar decisões do otimizador.
Essas instruções não devem ser simplesmente copiadas para PostgreSQL sem análise.
O PostgreSQL possui seu próprio otimizador e mecanismos de planejamento. O EDB Postgres Advanced Server também possui recursos de optimizer hints em seu modo de compatibilidade, conforme documentação da EDB.

Compatibilidade Oracle SQL no EDB Postgres Advanced Server
Oracle Compatibility Mode
Um dos diferenciais do EDB Postgres Advanced Server em projetos de migração Oracle é a existência de recursos específicos de compatibilidade.
A documentação atual da EDB descreve funcionalidades como comandos SQL compatíveis, tipos de dados Oracle, funções e operadores, packages, views de catálogo e outros mecanismos destinados a aplicações Oracle.
Isso pode reduzir o esforço de adaptação em determinados projetos, mas não significa que uma aplicação Oracle possa ser considerada automaticamente 100% compatível.
Compatibilidade deve ser medida
O nível de compatibilidade deve ser determinado por assessment.
Uma aplicação com milhares de linhas de SQL pode possuir diferentes níveis de dependência do Oracle.
É possível encontrar:
- SQL padrão.
- SQL compatível.
- SQL parcialmente compatível.
- SQL proprietário.
- SQL dependente de packages.
- SQL dependente do dicionário Oracle.
- SQL dependente de Database Links.
Oracle-compatible SQL commands
A EDB mantém uma referência específica de comandos SQL compatíveis com Oracle.
A documentação informa que diversos comandos SQL podem funcionar tanto em Oracle quanto em EDB Postgres Advanced Server, embora as funcionalidades e opções específicas devam ser avaliadas individualmente.
Isso é particularmente importante em projetos nos quais o objetivo é reduzir alterações no código da aplicação.
Oracle functions e operators
Funções e operadores também fazem parte da camada de compatibilidade.
Entretanto, mesmo quando existe uma função compatível, os resultados devem ser validados com dados reais.
Validação funcional
Uma função deve ser validada considerando:
- Entrada.
- Saída.
- Tipos de dados.
- Valores nulos.
- Precisão.
- Formato.
- Performance.
- Casos extremos.
Oracle data types
Tipos de dados são outro componente crítico da conversão.
Uma instrução SQL pode parecer compatível, mas produzir comportamento diferente quando existe conversão implícita de tipos.
Devem ser avaliados especialmente:
- NUMBER.
- VARCHAR2.
- CHAR.
- DATE.
- TIMESTAMP.
- CLOB.
- BLOB.
- RAW.
O EDB Postgres Advanced Server disponibiliza tipos e comportamentos adicionais destinados a melhorar a compatibilidade com aplicações Oracle.
Dicionário de dados
Aplicações e ferramentas administrativas podem consultar views do dicionário Oracle.
Esse tipo de dependência precisa ser identificado porque uma aplicação pode utilizar informações do catálogo do banco para gerar relatórios, realizar discovery ou controlar operações.
O EDB Postgres Advanced Server possui views de catálogo com compatibilidade Oracle para determinados casos de uso.
SQL e PL/SQL
Oracle SQL frequentemente aparece junto com PL/SQL.
Isso significa que uma análise isolada das queries pode não ser suficiente.
Procedures, functions, packages e triggers podem combinar SQL com lógica procedural.
Por esse motivo, o projeto de migração deve analisar conjuntamente:
SQL + PL/SQL + objetos + dados + aplicação.
SQL e Database Links
Referências a objetos remotos também devem ser identificadas.
Uma query aparentemente simples pode depender de um Database Link e, portanto, representar uma dependência externa.
Essa análise deve ser integrada ao levantamento realizado para a página de Database Links deste cluster.
SQL e Packages Oracle
Packages podem encapsular funções e procedimentos utilizados pelo SQL das aplicações.
Quando uma aplicação depende de packages Oracle, a conversão precisa avaliar não apenas o SQL visível, mas também as chamadas encapsuladas.
O EDB Postgres Advanced Server oferece diversos packages compatíveis com Oracle, mas a cobertura deve ser avaliada conforme a aplicação e a versão utilizada.
Estratégia para converter Oracle SQL para PostgreSQL
Etapa 1 — Discovery
O projeto começa com o levantamento do código SQL.
Devem ser identificadas queries presentes em aplicações, scripts, relatórios, procedures, functions, packages, views e jobs.
Etapa 2 — Classificação
Cada elemento deve ser classificado de acordo com seu nível de dependência.
- Classe A: SQL padrão e diretamente compatível.
- Classe B: SQL com pequenas adaptações.
- Classe C: SQL dependente de recursos Oracle.
- Classe D: SQL dependente de arquitetura Oracle específica.
Por que classificar?
A classificação permite estimar o esforço de migração e priorizar os componentes mais críticos.
Etapa 3 — Conversão
Depois da classificação, inicia-se a conversão.
As alterações podem envolver:
- Funções.
- Operadores.
- Tipos de dados.
- Conversões.
- Sequences.
- Joins.
- Subqueries.
- Expressões condicionais.
- Funções de data.
- Tratamento de NULL.
- Hints.
Etapa 4 — Compatibilidade EDB
Quando o destino for EDB Postgres Advanced Server, deve-se verificar se o recurso Oracle já possui suporte de compatibilidade.
Essa análise pode reduzir o esforço de reescrita e permitir uma estratégia de migração incremental. A própria EDB apresenta suas funcionalidades de compatibilidade como recursos voltados a organizações que estão migrando aplicações Oracle.
Etapa 5 — Testes funcionais
Cada conversão precisa ser validada.
Não basta verificar se a query executa sem erro.
Também é necessário verificar se o resultado produzido é equivalente ao comportamento esperado.
O que testar?
- Resultado.
- Quantidade de registros.
- Ordenação.
- Valores nulos.
- Conversões.
- Precisão numérica.
- Datas.
- Performance.
- Casos extremos.
Etapa 6 — Testes de performance
Uma query funcionalmente correta pode apresentar desempenho inadequado no PostgreSQL.
A migração deve avaliar planos de execução, índices, estatísticas, cardinalidade e comportamento do otimizador.
Etapa 7 — Testes integrados
Depois dos testes individuais, as queries precisam ser avaliadas dentro da aplicação.
Isso é importante porque a aplicação pode executar diversas consultas em sequência e depender de comportamentos específicos de transação.
Etapa 8 — Cutover
Antes do cutover, a equipe deve possuir uma matriz de compatibilidade mostrando quais componentes foram convertidos, testados e aprovados.
O objetivo é evitar que SQL não validado chegue ao ambiente de produção.
Automação da conversão
Ferramentas de migração podem automatizar parte da conversão, mas a revisão técnica continua sendo necessária.
A automação é especialmente útil para grandes volumes de código, desde que exista validação posterior.
Automação não substitui assessment
Uma ferramenta pode identificar padrões sintáticos, mas não conhece necessariamente a regra de negócio por trás de cada consulta.
Por isso, a abordagem mais segura combina:
Automação + análise técnica + testes + validação do negócio.
Oracle SQL no PostgreSQL e redução de risco
Quanto melhor for o conhecimento sobre o SQL existente, menor tende a ser a incerteza do projeto.
O assessment deve produzir uma visão clara do esforço necessário antes da migração definitiva.
Isso permite que gestores e arquitetos tomem decisões sobre prazo, recursos, arquitetura e estratégia de modernização.
Consultoria para Oracle SQL no PostgreSQL
A Dominus Tech pode apoiar organizações na análise de compatibilidade entre Oracle SQL e PostgreSQL Enterprise, incluindo discovery, classificação de código, assessment de compatibilidade, estratégia de conversão, testes funcionais, testes de performance e planejamento de migração.
O objetivo é reduzir a quantidade de alterações desnecessárias, preservar a lógica de negócio e construir uma arquitetura PostgreSQL adequada para ambientes corporativos.

FAQ — Oracle SQL no PostgreSQL
Oracle SQL funciona diretamente no PostgreSQL?
Parte do SQL pode ser compatível, mas não é correto assumir compatibilidade total. Funções, tipos, operadores, sintaxe e recursos específicos do Oracle podem exigir adaptação.
O PostgreSQL é compatível com Oracle SQL?
PostgreSQL e Oracle possuem diferenças importantes. Para aplicações com forte dependência de recursos Oracle, o EDB Postgres Advanced Server oferece uma camada adicional de compatibilidade Oracle.
O EDB Postgres Advanced Server possui compatibilidade com Oracle SQL?
Sim. A EDB documenta comandos SQL compatíveis, funções, operadores, tipos de dados, packages, views de catálogo e outros recursos destinados a aplicações Oracle.
É necessário reescrever todo o Oracle SQL?
Não necessariamente. O esforço depende do grau de utilização de recursos específicos do Oracle. O assessment deve identificar o que pode permanecer, o que precisa ser adaptado e o que precisa ser redesenhado.
NVL funciona no PostgreSQL?
O PostgreSQL possui mecanismos próprios para tratamento de valores nulos, incluindo COALESCE. Durante uma migração, a conversão deve considerar o comportamento esperado da aplicação.
DECODE funciona no PostgreSQL?
Aplicações PostgreSQL normalmente utilizam CASE para lógica condicional. A conversão de DECODE deve ser validada conforme a lógica específica da aplicação.
Oracle SQL e PL/SQL são a mesma coisa?
Não. SQL é utilizado para consultar e manipular dados, enquanto PL/SQL é a linguagem procedural do Oracle. Em uma migração, ambos precisam ser analisados quando a aplicação utiliza lógica procedural.
Sequences Oracle podem ser migradas para PostgreSQL?
Sim. PostgreSQL possui suporte a sequences, mas a definição e a forma de utilização precisam ser analisadas durante a conversão.
Hints Oracle funcionam no PostgreSQL?
Não se deve assumir equivalência direta. O PostgreSQL possui seu próprio mecanismo de planejamento. O EDB Postgres Advanced Server também possui recursos específicos de optimizer hints em sua camada de compatibilidade Oracle.
O SQL precisa ser testado depois da conversão?
Sim. O teste deve verificar não apenas se a consulta executa, mas também se produz resultados corretos e apresenta desempenho adequado.
É possível automatizar a conversão de Oracle SQL?
Parte do processo pode ser automatizada, principalmente identificação e conversão de padrões. Entretanto, código crítico e lógica de negócio precisam de revisão e validação técnica.
Como avaliar o esforço de migração Oracle SQL?
O melhor caminho é realizar um assessment que inventarie o código, classifique as dependências Oracle, identifique recursos compatíveis e estime o esforço de conversão e testes.
Links Relacionados
- Migração Oracle para PostgreSQL
- EnterpriseDB
- EDB Postgres Advanced Server
- EDB Migration Toolkit
- PostgreSQL Enterprise
- PostgreSQL para Empresas
- PostgreSQL vs EDB Postgres
- PostgreSQL Community vs EnterpriseDB
- Compatibilidade Oracle PostgreSQL
- PostgreSQL Compatível com Oracle
- PL/SQL no PostgreSQL
- Packages Oracle
- Procedures Oracle
- Triggers Oracle
- Sequences Oracle
- Synonyms Oracle
- Database Links
Recursos Oficiais
- EDB — SQL Reference
- EDB — Oracle Compatibility Reference
- EDB — Enhanced Compatibility Features
- EDB — Oracle and EDB Postgres Advanced Server Comparison
- PostgreSQL — SQL Commands

