Oracle to PostgreSQL Migration and Synchronization | NineData
Use this workflow to move Oracle data to PostgreSQL while keeping the source online. NineData Data Replication helps load existing data, keep new Oracle changes synchronized, validate the PostgreSQL target, and support a controlled cutover.
This page explains the high-level flow. For detailed permissions, Oracle archive logging requirements, supplemental logging, data type mapping, and precheck items, see Oracle to PostgreSQL.
When to use this workflow
Use this workflow to:
- Move Oracle workloads to PostgreSQL as part of modernization or cost optimization.
- Keep the Oracle source online while migration is in progress.
- Synchronize incremental Oracle changes before final cutover.
- Validate PostgreSQL data before switching application traffic.
- Monitor a long-running migration task and respond to failures or delay.
Overview
Plan the migration around these areas:
- Schema compatibility: Review object definitions, data types, and SQL behavior that may differ between Oracle and PostgreSQL.
- Source logging: Incremental replication depends on Oracle redo log processing. Make sure the source database is prepared before the task starts.
- Validation window: Use data comparison and application read-only checks before cutover.
- Cutover timing: Switch business traffic during a planned low-traffic window after the replication delay reaches
0seconds. - Rollback strategy: If your migration requires reverse synchronization, create and validate a separate reverse replication task before cutover.
Before you begin
Prepare the following items:
- Access to the NineData console.
- Connection information and accounts for the Oracle source and PostgreSQL target.
- Required Oracle and PostgreSQL permissions.
- Oracle
ARCHIVELOGmode and supplemental logging when incremental replication is required. - Network connectivity from NineData to both systems.
- A cutover and rollback plan approved by the application owners.
Step 1: Add the source and target data sources
In the NineData console, click Data Source Management > Data Sources, and then click Create Data Source.

Follow the page prompts, test the connection, and click Create Data Source.

Repeat the process for the Oracle source and the PostgreSQL target.
Step 2: Create the migration task
In the NineData console, click Data Replication > Data Replication, and then click Create Replication.

Configure the Oracle source and PostgreSQL target.
Select the replication types required for migration. To support non-disruptive cutover, select Full Replication and Incremental Replication. Include schema replication if you need NineData to create target structures.

Select the source objects, configure mapping and filtering if needed, and run the precheck.
After the precheck passes, start the task.
Monitor the task until full migration finishes and incremental delay reaches
0seconds.
Step 3: Validate target data
Use data comparison to verify the PostgreSQL target before cutover.
Open the replication task created in Step 2.

Click the Data Comparison tab. If comparison was not enabled during task creation, click Start Data Comparison.
tipAfter comparison starts, NineData compares the selected source and target objects and displays the comparison result.

Click Re-compare to validate the latest synchronized data.

Step 4: Configure alerts
For an incremental migration task, configure alerts for task failure and replication delay.
Open the replication task details page.

Click Configure Alerts.

Enter a Policy Name, review the alert rules, and click Save Configuration.

Result
After full migration completes, incremental synchronization keeps PostgreSQL aligned with new Oracle changes. When synchronization delay is 0 seconds and validation passes, switch application traffic to PostgreSQL during the planned cutover window.
Keep monitoring the task after cutover until the team confirms that applications are running correctly on PostgreSQL.
Related solutions
- Cross-cloud database migration
- MySQL to TiDB migration
- MySQL to Doris synchronization
- MySQL to StarRocks synchronization
- Lightweight ETL synchronization