Oracle
PostgreSQL

Oracle to PostgreSQL Converter

Schema, indexes, foreign keys and rows into PostgreSQL - once, or on a schedule while you cut over.

Version
5.8.0
Release Date
Nov. 8, 2026
Size
72.9 MB
Platform
Windows 10 or later

Rather not run it yourself?

Let us do the migration →

Move an Oracle database into PostgreSQL without writing the target schema by hand. DBConvert creates the selected tables, indexes, and foreign keys, maps every column to a PostgreSQL type, and transfers the rows directly between the two servers.

  • Reads Oracle Database 11.2 and later, including XE. The Oracle client ships with the application, so there is no separate Oracle Client to install.
  • Writes to PostgreSQL, Amazon RDS or Aurora, Azure Database for PostgreSQL, Google Cloud SQL, or Supabase, or to a SQL script you load later with psql.
  • Runs on Windows as a desktop application.
  • The same download converts PostgreSQL back into Oracle.

Prepare the migration before moving data

Connections, tables, and mappings have their own screens. Return to any of them as you refine the job, without restarting the setup.

Select the dataset

Choose tables and use a per-table row filter when only part of the Oracle schema belongs in PostgreSQL.

Review the mapping

Check the proposed PostgreSQL type of each column and change it before loading, for example a key declared as a bare NUMBER that the application treats as an integer.

Keep the setup

Save connections for reuse and keep the table selections, mappings, and options together in a job. Run it again from the application or from Task Scheduler with --run-job.

Convert once, or synchronize during the cutover

Both modes are part of the same DBConvert application.

One-time conversion

Create the PostgreSQL schema and load the selected rows. Load a test database first, compare it with Oracle, and run the application's queries before PostgreSQL takes production writes.

Scheduled synchronization

Keep Oracle in use while PostgreSQL is tested. A sync job carries inserts, updates, and deletes in one direction or both; define its keys and conflict rules before allowing writes on both sides.

When PostgreSQL is the right target

Licence and vendor control

PostgreSQL is open source and carries no per-core database licence. Moving the tables is the first step out of an Oracle contract that no longer fits the workload.

One database across clouds

Every major cloud runs managed PostgreSQL, so the same target works on your own server, Amazon RDS or Aurora, Azure, Google Cloud SQL, or Supabase.

How Oracle types map to PostgreSQL

These are the defaults. Review or override the target type per column before loading.

Scroll sideways to see all columns.

In Oracle DBConvert default in PostgreSQL What needs attention
NUMBER NUMBER(p) becomes smallint, integer, or bigint by precision, and numeric(p,0) beyond 18 digits. NUMBER(p,s) becomes numeric(p,s); a bare NUMBER becomes numeric. Every digit is kept. A key declared as a bare NUMBER arrives as numeric; change it to bigint in the mapping if the application expects an integer.
VARCHAR2, NVARCHAR2, CHAR, CLOB, LONG varchar(n) and char(n), with the length counted in characters, including VARCHAR2(n BYTE). CLOB, NCLOB, and LONG become text. Check sorting and comparisons that relied on the Oracle collation.
DATE, TIMESTAMP timestamp. An Oracle DATE carries a time of day, so it does not become a PostgreSQL date. Queries that compare a DATE column with a plain date still match only midnight values, as they did in Oracle.
TIMESTAMP WITH TIME ZONE, WITH LOCAL TIME ZONE timestamptz, written in UTC. The instant is the same whatever time zone the PostgreSQL server runs in. PostgreSQL stores the instant, not the original offset or zone name. Keep the offset in its own column if the application reads it.
BLOB, RAW, LONG RAW, INTERVAL, floating point Binary types become bytea, both INTERVAL types interval, BINARY_FLOAT real, FLOAT and BINARY_DOUBLE double precision. Values arrive byte for byte; nothing to adjust for most applications.
Identity columns, defaults An identity column becomes integer or bigint with a sequence, by precision, keeping its values. Constant defaults are kept; SYSDATE becomes the current time. The next insert gets a key above the copied ones. Keys filled by a trigger and a sequence are copied as values; plan their generation separately.
Upper-case names Unquoted Oracle names, stored in upper case, arrive in lower case. A name created in mixed case keeps it. Queries can use unquoted lower-case names in PostgreSQL. Mixed-case names must stay quoted.

PL/SQL and views need a separate pass

DBConvert moves tables, their columns, indexes, and foreign keys. Views, packages, procedures, functions, and triggers stay in Oracle and are rewritten for PostgreSQL by hand, together with application SQL that uses Oracle-only functions.

Supported versions and services

Oracle

  • Oracle Database 11.2 and later
  • Oracle client included in the installer

PostgreSQL

  • PostgreSQL 8.x through 17.x
  • Amazon RDS / Aurora for PostgreSQL, Azure Database for PostgreSQL, Google Cloud SQL, Supabase
  • PostgreSQL schemas (public, custom schemas)

How to migrate Oracle to PostgreSQL

1

Setup: connect Oracle and PostgreSQL

Pick Convert or Sync, then choose the source and destination connections side by side on one screen. A connection is saved once and reused by every job.

Sync keeps an existing PostgreSQL database up to date with Oracle: each run carries only the inserts, updates and deletes since the last one.

Oracle source

Enter the host, port, and service name, such as XEPDB1 or ORCL, and connect as Normal or SYSDBA. The Oracle client ships with DBConvert. See Oracle connection settings.

PostgreSQL target

Allow remote access from the DBConvert machine. For local PostgreSQL, configure pg_hba.conf.

2

Tables & mapping: see every PostgreSQL type before a row moves

Pick the tables, then open one: each Oracle column shows the PostgreSQL type it becomes. Change a type or a name in place; the line at the bottom names anything that would fail.

3

Execution: start it, and the job is saved

Review what the run will do, start it, and read the log as it goes. The job stays in the list to run again or put on a schedule.

Verify the copy

With Verify after the run on, the destination is checked when the copy ends: schema, totals and rows. The window shows which tables, rows and columns differ.

How Verify works

Every option, in the guide

Naming rules, table options, row filters, scheduling and the command line work the same for every database pair, so they live in one place.

Move Oracle data into PostgreSQL

Download the current build and run the first job against your own database.

Windows Windows 10 or later · 72.9 MB