Migrating On-Premises Oracle Databases to OCI: Tools, Strategies, and Pitfalls

Migrating an Oracle database to OCI involves more than moving data — it requires selecting the correct migration toolchain, designing for cutover, and managing risk. Oracle provides multiple migration paths, and choosing incorrectly leads to extended downtime or data integrity issues. This article compares the major approaches and provides decision criteria. Migration Approach Decision Tree Is downtime during migration acceptable? ├── YES (hours or more acceptable) │ ├── Database size < 1 TB → Data Pump (expdp/impdp) over network or pre-stage to Object Storage │ └── Database size > 1 TB → RMAN duplicate or backup/restore to OCI Object Storage └── NO (near-zero or zero downtime required) ├── Source is Oracle → Zero Downtime Migration (ZDM) with GoldenGate └── Source is non-Oracle → OCI Database Migration Service (DMS) Zero Downtime Migration (ZDM) Oracle ZDM is the recommended tool for migrating Oracle databases to OCI with minimal or zero downtime. It orchestrates a combination of RMAN (initial bulk copy) + GoldenGate (ongoing replication during migration) in an automated workflow. ...

March 1, 2026 · 5 min · mardaff

ZDM Migration: Exadata X8 On-Premises to Oracle Database@Azure (ADB-S) via GoldenGate

This article presents a complete, real-world migration playbook for moving an Oracle Database from an on-premises Exadata X8 to Oracle Database@Azure Autonomous Database Serverless (ADB-S). The two data centres are 70 km apart, connected via a dedicated Azure ExpressRoute circuit. We use Oracle Zero Downtime Migration (ZDM) with GoldenGate replication to achieve a sub-minute application downtime. Environment Diagram ┌─────────────────────────────────────────────────────────────────┐ │ ON-PREMISES DATA CENTRE (Frankfurt) │ │ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ EXADATA X8 FULL RACK │ │ │ │ │ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ │ │ x8db01 │ │ x8db02 │ Compute nodes │ │ │ │ │ (RAC inst1) │ │ (RAC inst2) │ │ │ │ │ └──────┬───────┘ └──────┬───────┘ │ │ │ │ └──────── IB ─────────┘ │ │ │ │ ┌──────────────────┐ │ │ │ │ │ Storage Cells │ (8 cells) │ │ │ │ │ x8cel01–x8cel08 │ │ │ │ │ └──────────────────┘ │ │ │ │ │ │ │ │ Database: ORCL (CDB), PDB: PDB_ERPSYS │ │ │ │ Size: 3.2 TB (data) + 400 GB indexes │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ ZDM Service Host: zdmhost01.prod.example.com │ │ │ │ GoldenGate Extract: running on x8db01 (Integrated) │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ │ Azure ExpressRoute │ │ │ Dedicated, 10 Gbps, 70 km │ │ │ RTT: ~0.7 ms (measured) │ │ │ │ └─────────────────────┼──────────────────────────────────────────-─┘ │ ┌──────────────────────┼──────────────────────────────────────────┐ │ ORACLE DB@AZURE (West Europe — Amsterdam) │ │ │ │ │ ┌────────────────────▼──────────────────────────────────────┐ │ │ │ Oracle Database@Azure — ADB-S │ │ │ │ Display Name: adb-erpsys-prod │ │ │ │ DB Name: ADBERPSY │ │ │ │ Shape: 16 OCPUs, auto-scale │ │ │ │ Storage: 10 TB (elastic) │ │ │ │ TLS: mTLS (wallet-based) │ │ │ │ │ │ │ │ OCI GoldenGate (Managed Microservices deployment) │ │ │ │ GG Service: gg-erpsys-deployment │ │ │ │ Replicat: REP_ERPSYS (Integrated) │ │ │ └────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────┘ Network Architecture On-Premises Exadata Azure ExpressRoute Oracle DB@Azure (Frankfurt DC) (Dedicated, 10 Gbps) (Amsterdam) 10.10.0.0/16 ───────────────────────────────────────► 172.16.0.0/16 Key Network Points: x8db01 public IP: 10.10.1.101 x8db01 SCAN IP: 10.10.1.200 (for GoldenGate source connection) zdmhost01: 10.10.5.50 OCI GoldenGate GW: 172.16.10.10 (private endpoint) ADB-S private EP: 172.16.20.5 (private endpoint in Oracle DB@Azure VNet) ExpressRoute Circuit: Provider: equinix-frankfurt Bandwidth: 10 Gbps dedicated Measured RTT (Frankfurt → Amsterdam): 0.7 ms Throughput achieved (iperf3): 9.2 Gbps (92% of capacity) Reference Environment SOURCE (On-Premises Exadata X8): RAC node 1: x8db01.prod.example.com (oracle user) RAC node 2: x8db02.prod.example.com Storage cells: x8cel01–x8cel08.prod.example.com ZDM host: zdmhost01.prod.example.com (oracle user, ZDM installed here) DB unique name: ORCL PDB: PDB_ERPSYS Data size: 3.2 TB DB version: 19.18.0.0 TARGET (Oracle DB@Azure): Region: Azure West Europe (Amsterdam) Resource Group: rg-oracle-prod ADB name: adb-erpsys-prod ADB DB Name: ADBERPSY Service name: adberpsy_high (high priority service) mTLS wallet dir: /etc/oracle/adb_wallet/ (on zdmhost01) OCI GG deploy: gg-erpsys-deployment (Microservices, managed by Oracle) OCI GG version: 21c ADMIN JUMP HOST: admin01.prod.example.com (used for OCI CLI, ZDM monitoring) Phase 1: Pre-Migration Assessment 1.1 Network Latency and Throughput Validation Before any migration work, validate the ExpressRoute circuit performance from the ZDM host: ...

March 1, 2026 · 10 min · mardaff