Home / OCI

OCIRunbookAdvanced

Transformation: on-premises Oracle Database to Autonomous Database with Zero Downtime Migration

Move Oracle databases to Autonomous Database using Zero Downtime Migration (ZDM) logical online migration. Assess with CPAT, prepare source and target, configure Data Pump and GoldenGate replication, rehearse and switch over.

Deepak Bhardwaj2 min read

Applies toOracle Database 11.2.0.4–19c/23ai sources, Autonomous Database Serverless, Oracle Zero Downtime Migration 21c+, OCI GoldenGate

Physical or logical?

Autonomous Database only accepts logical migrations (Data Pump, optionally with GoldenGate for ongoing changes). Physical migrations (RMAN, Data Guard) target Base Database or Exadata, not Autonomous.

ZDM workflow Downtime
Logical offline (Data Pump only) Export + import time
Logical online (Data Pump + GoldenGate) Minutes at switchover

1. Assess compatibility

Run the Cloud Premigration Advisor Tool (CPAT) against the source:

./premigration.sh --connectstring jdbc:oracle:thin:@srcdb:1521/ORCLPDB --username SYSTEM \
  --targetcloud ATPS --reportformat text json --outdir /tmp/cpat

Typical findings: objects in SYS/SYSTEM, unsupported features (some datatypes, Java in the database, directories pointing at local files), XA or DBMS_JOB usage. Fix or plan around every blocker before the first rehearsal.

2. Prepare

  • ZDM host: a Linux VM with network access to the source DB, the ADB endpoint and Object Storage; install ZDM.
  • Source: archive log mode, force logging and supplemental logging (for online migration), a GoldenGate admin user, enough undo and stream pool.
  • Target: Autonomous Database created with the right ECPU count and storage; network access from ZDM and GoldenGate (private endpoint recommended).
  • OCI GoldenGate deployment for the online workflow.
  • An Object Storage bucket for Data Pump dump files (or a database link for direct import).

3. Response file

MIGRATION_METHOD=ONLINE_LOGICAL
DATA_TRANSFER_MEDIUM=OSS
TARGETDATABASE_OCID=ocid1.autonomousdatabase.oc1...
TARGETDATABASE_ADMINUSERNAME=ADMIN
SOURCEDATABASE_ADMINUSERNAME=SYSTEM
SOURCEDATABASE_CONNECTIONDETAILS_HOST=srcdb.corp.local
SOURCEDATABASE_CONNECTIONDETAILS_PORT=1521
SOURCEDATABASE_CONNECTIONDETAILS_SERVICENAME=ORCLPDB
OCIAUTHENTICATIONDETAILS_REGIONID=eu-frankfurt-1
DATAPUMPSETTINGS_DATABUCKET_NAMESPACENAME=<namespace>
DATAPUMPSETTINGS_DATABUCKET_BUCKETNAME=zdm-dumps
GOLDENGATEHUB_URL=https://<gg-deployment-host>
INCLUDEOBJECTS-1=owner:APP

Parameter names vary by ZDM release — start from the template shipped with your version.

4. Evaluate, then migrate

$ZDM_HOME/bin/zdmcli migrate database -rsp /home/zdm/app.rsp -sourcenode srcdb -srcauth zdmauth \
  -srcarg1 user:oracle -srcarg2 identity_file:/home/zdm/.ssh/id_rsa -eval

$ZDM_HOME/bin/zdmcli migrate database -rsp /home/zdm/app.rsp -sourcenode srcdb ... -pauseafter ZDM_MONITOR_GG_LAG
$ZDM_HOME/bin/zdmcli query job -jobid 12

Pausing after the GoldenGate lag phase keeps replication running until you're ready to switch.

5. Validate

  • Row counts and checksums for key tables; invalid objects (SELECT owner, object_type, COUNT(*) FROM dba_objects WHERE status='INVALID' GROUP BY owner, object_type).
  • Application tests against ADB using the wallet / TLS connection strings.
  • Performance: gather stats; compare top SQL with the source AWR.

6. Switch over

Stop application writes, let GoldenGate lag reach zero, resume the job to complete switchover, and repoint the apps. Keep the source database for rollback; GoldenGate reverse replication is possible if you need a fallback with new writes.

Checklist

  • CPAT blockers resolved
  • ZDM host, GoldenGate deployment and bucket ready
  • -eval passes; rehearsal completed and timed
  • Validation scripts and app tests signed off
  • Switchover window agreed with rollback plan