On this page
No single tool migrates an Oracle database to PostgreSQL end to end. Ora2Pg exports the schema and data and does basic PL/SQL conversion, offline. AWS Schema Conversion Tool (SCT) converts schemas and flags what it cannot convert. AWS DMS moves the data once or keeps replicating changes. HexaRocket is the product Ora2Pg's own site points to for online migration. pgloader cannot read Oracle at all. What every tool leaves to engineers is the logic inside the database, and that is where a migration is won or lost. All facts below come from vendor documentation read on 4 November 2026. AceMQ's Oracle to PostgreSQL migration service starts from the same classification, and the wider route is on database migration services to PostgreSQL.
What each tool does, and what its own documentation says it leaves
| Tool | What it does | What the documentation says it leaves |
|---|---|---|
| Ora2Pg 25.0 (20 April 2025, GPL-3.0) | Scans an Oracle database and exports tables, constraints, views, materialized views, sequences, indexes, triggers, grants, functions, procedures, packages, partitions, user-defined types, database links (as foreign data wrappers) and synonyms (as views), plus data as INSERT or COPY statements. | PL/SQL conversion is described as basic, and the generated code has to be reviewed. Its site labels data migration offline and requires downtime. |
| AWS Schema Conversion Tool | Converts a source schema to PostgreSQL or Aurora PostgreSQL (Oracle 10.1 and later as a source). Handles sequences, ROWID as a data column, dynamic SQL and partitions, with an extension pack for features that cannot convert directly. | Where code cannot convert automatically it gives guidance. AWS's migration playbook says not every Oracle feature is fully compatible or has a simple workaround. |
| AWS DMS | Converts schemas through DMS Schema Conversion, and migrates data as a one-time load or by replicating ongoing changes. | The DMS overview page does not list per-engine limits such as large objects or change-capture prerequisites. Read the Oracle source and PostgreSQL target pages for your versions. |
| HexaRocket | Named on Ora2Pg's site for change capture, live replication and rollback. | We have not evaluated it beyond what that site says. The site adds that a migration may still need manual fixes, deeper validation or cutover support. |
| EDB Migration Toolkit | Command-line tool that reads Oracle, MySQL, SQL Server and Sybase ASE and writes to EDB Postgres Advanced Server or PostgreSQL. | Sybase ASE as a source is limited to EDB Postgres Advanced Server. |
| pgloader | Loads data into PostgreSQL from MySQL, MariaDB, SQL Server, SQLite and flat files. | Oracle is not supported: its site says Oracle support was never built. |
| orafce (extension) | Emulates a subset of Oracle functions and packages in PostgreSQL, such as DBMS_OUTPUT, UTL_FILE, DBMS_PIPE and DBMS_ALERT. | The project says its DBMS_SQL implementation does not ensure full compatibility, and that emulation brings no performance advantage over built-in PL/pgSQL. |
The part no tool converts for you
The PostgreSQL porting guide is plain about structure. PostgreSQL has no packages: it recommends schemas to group functions, and temporary tables for per-session state. Exception names differ, user-defined exception names cannot be declared, and dup_val_on_index becomes unique_violation. Dynamic SQL needs quote_literal and quote_ident, and instr has no built-in. A converter can rewrite syntax. It cannot decide how a package that holds state across calls should be redesigned.
That is why we do not quote a conversion percentage: no vendor page we read states one, and the figure depends on how much logic your databases keep in PL/SQL. Hierarchical queries, the (+) join operator and autonomous transactions are found by searching your code and testing the replacement, not by trusting a score. The estate-level view of that work is in Oracle to PostgreSQL migration at scale.
Choosing the data mover
Pick the data tool after you know how long the application can stop. Ora2Pg is an offline export, and a rehearsed maintenance window can absorb it. When the Oracle database must keep serving until cutover, you need a tool that does a full load and then change capture, such as AWS DMS or the product Ora2Pg's site names. Either way, measure the load on production-sized data in rehearsal, and do not combine the platform move with a PostgreSQL major version upgrade in the same window. For the target, PostgreSQL 18 has the longest runway, with a final release due on 14 November 2030, per postgresql.org.
A fair way to compare tools on your own data
- Pick one representative database with real packages, jobs and links, not the cleanest schema.
- Run each candidate tool on the same copy and record what converted without edits, what carried action items and what failed.
- Run the application's own tests against each result, because syntax that loads is not logic that behaves.
- Time the data load and, for change capture, the lag under write load.
- Write down who owns each unconverted object. That list, not the tool score, is the estimate.
Deciding whether to leave Oracle at all is a separate question, covered in PostgreSQL vs Oracle compared. Oracle's own dates are in Oracle 19c end of life.
Sources
- Ora2Pg on GitHub
- Ora2Pg project site
- AWS SCT: Oracle to PostgreSQL
- AWS SCT user guide: sources, targets and extension pack
- AWS Oracle to Aurora PostgreSQL migration playbook
- AWS Database Migration Service
- pgloader
- EDB Migration Toolkit
- orafce
- PostgreSQL: Porting from Oracle PL/SQL
- PostgreSQL versioning policy
Frequently Asked Questions
Which is the best Oracle to PostgreSQL migration tool?
There is no single best one. Ora2Pg is a free offline exporter with basic PL/SQL conversion, AWS SCT converts schemas and flags what it cannot, and AWS DMS moves data and ongoing changes. Compare them on one representative database with real packages and jobs, and judge by what needed manual work.
Can Ora2Pg migrate with no downtime?
Ora2Pg's own site labels its data migration offline and says it requires downtime. The same site points to HexaRocket for change capture, live replication and rollback.
Does pgloader support Oracle?
No. pgloader's site lists MySQL, MariaDB, SQL Server, SQLite and flat files as sources, and says Oracle support was never built.
Is AWS SCT only for AWS targets?
AWS lists PostgreSQL, as well as Aurora PostgreSQL, among SCT's targets for an Oracle source, so it can be used to convert a schema for a PostgreSQL you run yourself. Some converted code relies on its extension pack.
Talk to an engineer
Need a hand with PostgreSQL?
Senior engineers who run it in production. Get a quote or a free consultation, no sales pitch.
Guides, comparisons and research

