Skip to content
dbSlice®
Product Who it's for Performance Pricing Blog Guides Support Buy dbSlice

dbSlice / Sync

Sync Oracle to PostgreSQL

Move the data once, then keep PostgreSQL up to date with Oracle: from a Windows app or the command line, with no Oracle client to install and nothing to set up on the Oracle server.

Try it free on the Microsoft Store ↗ See pricing

At a glance

  • What it does: keeps PostgreSQL up to date with Oracle after the first copy, with upsert, insert-new or incremental runs, from a Windows app or the CLI.
  • Engines: Oracle to PostgreSQL and back; the same screen syncs any pair of SQL Server, PostgreSQL, Oracle, MySQL, MariaDB, Firebird, SQLite and InterSystems Caché/IRIS.
  • What it does not do: convert PL/SQL, replicate in real time, or detect deletes in incremental runs.
  • Free or paid: try it in the free Microsoft Store version (no license key); writing to a target database needs a Desktop or Server license.

When this is the right tool

  • A PostgreSQL copy for reports or a new application that must follow an Oracle system of record.
  • An Oracle to PostgreSQL migration with a long cutover: Oracle stays in production for weeks and PostgreSQL has to catch up every night until the switch.
  • Moving off Oracle table by table, keeping the tables already moved up to date while the rest waits.
dbSlice Synchronize tab

How a sync works

  1. Pick the source table or a SELECT in Oracle and the target table in PostgreSQL.
  2. Choose the key column used to match rows. dbSlice reads Oracle in small batches, so production keeps serving its users while the sync runs.
  3. Choose what the run does to the target:
    ModeWhat it does
    UpsertInserts new keys and updates the ones that changed
    Insert newInserts only keys that are missing; existing rows are untouched
    Initial loadPlain inserts into an empty table
    Update onlyUpdates rows that already exist
    Full reloadEmpties the target table and loads it again
  4. Optional: map columns with different names, add a WHERE filter, mask sensitive values in flight.
  5. Check before writing. Record Diff compares keys on both sides (how many, which are missing).
  6. Run it, or save it as a job and run it from the CLI or Windows Task Scheduler.

Incremental runs on Oracle

Point the job at a column that only grows: a LAST_UPDATED date or timestamp kept by the application, or an id filled by a sequence. Each run remembers the highest value it read, and the next one only reads rows above it. Combined with Upsert, a nightly refresh reads what changed instead of the whole table.

Two Oracle details:

  • DATE holds a time. An Oracle DATE column keeps hours, minutes and seconds, so it works as an incremental column as long as the application updates it on every change.
  • Deletes are not seen. An incremental run does not notice rows deleted in Oracle. Schedule a periodic full comparison (Record Diff) or a full reload.

Types, in one paragraph

If the PostgreSQL table does not exist yet, dbSlice stops before writing and shows a CREATE TABLE for your DBA: Oracle DATE as TIMESTAMP, NUMBER without precision as plain NUMERIC, VARCHAR2 as VARCHAR, CLOB as TEXT. The full table and the common errors are in the Oracle to PostgreSQL migration guide.

Your database stays yours

By default dbSlice only reads and writes rows. It does not create tables, triggers or temporary objects in your databases, and it installs nothing on the Oracle server. For Upsert and Insert new into PostgreSQL there is a faster write mode that needs a temporary table for the session; it is off by default and you turn it on only if your DBA allows temporary tables.

What dbSlice does not do

  • It moves data, not code. PL/SQL packages, procedures and triggers are not converted.
  • It is not real-time replication. Runs are batch jobs (on demand or scheduled). If you need sub-second change capture, look at log-based CDC tools.

FAQ

Do I need the Oracle Instant Client or a change on the Oracle server?

No. dbSlice connects with host, port, service name and user, and only reads.

How often can it run?

As often as you schedule the job: nightly is the usual choice during a migration. Each incremental run reads only the rows above the last value it saw.

What happens to rows deleted in Oracle?

Incremental runs do not see them. Use Record Diff or a full reload on a schedule, or before the switch.

Can I mask personal data on the way?

Yes. Sensitive fields can be masked in flight, with keys and foreign keys preserved.

Also works for

Oracle to SQL Server, MySQL, MariaDB, Firebird, SQLite or InterSystems IRIS, and PostgreSQL back into Oracle. For a one-time move, read the Oracle to PostgreSQL migration guide.

Try it on your own data: the free Microsoft Store version needs no license key.

Try free on the Microsoft Store ↗Buy dbSlice

Related guides

  • Export InterSystems Caché and IRIS data to PostgreSQL
  • SQL Server to MySQL migration, on Windows
  • MySQL to PostgreSQL migration, with a GUI and a sync after cutover
  • Oracle to PostgreSQL migration
  • Sync SQL Server to PostgreSQL
  • How to read sync speed numbers
dbSlice®

Professional data synchronization, migration and reconciliation — for Windows and Linux (Docker).

A Thinwork product

Product

Product Pricing Guides Linux (Docker) Release notes Free version (Microsoft Store) Support FAQ Renew maintenance CLI examples

Legal

Terms of Use Privacy Policy Refund Policy EULA

Company

THINWORK TECNOLOGIA DA INFORMACAO - LTDA
CNPJ 09.166.605/0001-21
Since 2007

Av. Paulista, 1471, Conj. 511, Anexo CP 1722
Bela Vista, São Paulo - SP, 01311-927, Brazil

Sales

+55 (11) 5197-7969 [email protected]

Support hours: Mon–Fri, 9:00–17:00 (UTC−3)

github.com/thinwork Follow @dbsliceapp
© 2026 dbSlice®. All rights reserved. Windows x64 · GUI + CLI · Linux (Docker) · Web

dbSlice® and the dbSlice pizza mascot logo are registered trademarks of Thinwork Tecnologia da Informação Ltda. with the Brazilian National Institute of Industrial Property (INPI).

All other product names, logos and brands are the property of their respective owners and appear here only to identify the systems dbSlice works with. dbSlice is an independent product, not affiliated with, sponsored or endorsed by them. Learn more