Executive Summary

This guide provides a comprehensive overview for migrating on-premises Oracle Exadata databases to Oracle Exadata Database Service on Azure, tailored for data engineers and developers interested in AI and Python solutions. It covers the unique features of Oracle Exadata, its differences from non-Exadata Oracle databases, available Exadata options on Azure, current pricing models, and a step-by-step process for provisioning Exadata infrastructure for Development (Dev), User Acceptance Testing (UAT), and Production (Prod) environments. The guide also details migration methods, including an in-depth exploration of Oracle Zero Downtime Migration (ZDM), and highlights how Python can automate migration tasks and how Exadata supports AI workloads. Given that Oracle Database@Azure became generally available in December 2023, this guide emphasizes testing migration strategies in non-production environments to ensure minimal disruption and optimal performance for AI-driven applications.

For AI practitioners, migrating to Oracle Exadata on Azure unlocks unparalleled performance for data-intensive tasks. Whether you’re training deep learning models with PyTorch or analyzing massive datasets with pandas, Exadata’s optimized architecture ensures low-latency data access and scalability, seamlessly integrated with Azure’s AI services.

1. Introduction to Oracle Exadata

What is Oracle Exadata?

Oracle Exadata is an engineered system optimized for running Oracle Databases, combining hardware and software to deliver high performance, scalability, and availability. It integrates compute nodes, storage cells, and high-speed networking (InfiniBand or RoCE) with specialized software features like Smart Scan, Smart Flash Cache, and Exadata RDMA Memory (XRMEM). Exadata supports a wide range of workloads, including Online Transaction Processing (OLTP), Data Warehousing, Analytics, and AI Vector processing, making it ideal for database consolidation and mission-critical applications, such as AI model training and large-scale data analytics.

Differences Between Oracle Exadata and Non-Exadata Oracle Databases

2. Oracle Exadata Options on Azure

Oracle Database@Azure, available since December 2023, offers two primary Exadata-based services:

2.1 Exadata Database Service on Dedicated Infrastructure

2.2 Autonomous Database on Shared Exadata Infrastructure

Pricing Model

As of July 2025, Oracle Database@Azure pricing aligns with Oracle Cloud Infrastructure (OCI) Exadata Cloud costs. Exact pricing depends on the configuration (e.g., number of OCPUs, storage capacity) and region. For precise costs, contact your Oracle sales team or use the OCI Cost Estimator.

Choosing the Right Option

3. Step-by-Step Process for Provisioning Exadata on Azure

The following steps outline how to provision Oracle Exadata Infrastructure for Dev, UAT, and Prod environments using the Azure Portal and OCI Console. The process is similar across environments, with differences in resource sizing and security configurations.

Prerequisites

Provisioning Steps

  1. Access the Azure Portal: Log in to the Azure Portal and search for “Oracle Database@Azure.” Select “Create” from the OracleDB@Azure overview page.
  2. Basics Tab: Select the Azure subscription and resource group (create a new one for each environment: Dev, UAT, Prod). Enter a unique name for the Exadata Infrastructure. Choose an available region and availability zone (limited to supported regions, e.g., US East). Verify the OCI account name (display-only field).
  3. Configuration Tab: Select the Exadata model (X9M for Dedicated Infrastructure). Configure database servers (2–32) and storage servers (3–64) based on environment needs:
    • Dev: Minimal configuration (e.g., 2 database servers, 3 storage servers).
    • UAT: Moderate configuration to simulate production workloads.
    • Prod: High-capacity configuration for performance and scalability.
    Set maintenance method (Rolling or Nonrolling) and schedule (default: No preference).
  4. Tags Tab: Add Azure tags for resource management (not propagated to OCI).
  5. Review + Create Tab: Run the validation process to check configurations. Correct any errors and click “Create” to start provisioning (time-consuming process).
  6. Create Exadata VM Cluster: From the OracleDB@Azure blade, select the Exadata VM Cluster tab and click “+ Create.” Configure VM cluster details, including database home and software image (default: 19c). For Dev/UAT, use smaller VM clusters; for Prod, ensure sufficient OCPUs and storage.
  7. Create Database: From the Exadata VM Cluster Details page, select “Databases” and click “Create database.” Specify database home, name, and configurations (e.g., RAC-enabled for Prod).
  8. Post-Provisioning: Use the OCI Console for advanced management tasks (e.g., database tuning, backups). Configure network security groups and firewall rules for environment-specific access.

4. Migration Methods to Oracle Exadata on Azure

Several methods are available to migrate on-premises Oracle Exadata databases to Azure Exadata, each suited to different scenarios. Testing migration strategies in Dev/UAT environments before production is critical to minimize risks.

4.1 Export/Import (Data Pump)

4.2 RMAN Backup and Restore

4.3 Data Guard with Read-Only Standby

4.4 Oracle Zero Downtime Migration (ZDM)

Conceptual Overview of ZDM

ZDM operates by orchestrating the migration process through a centralized service host, which coordinates tasks between the source (on-premises Exadata) and target (Azure Exadata) environments. Key features include:

The process involves discovery, backup/transfer, restore/synchronization, switchover, and validation, making it ideal for mission-critical applications requiring minimal disruption.

ZDM Migration Steps (Physical Online Migration with Data Guard)

  1. Install and Configure ZDM:
    • Deploy a ZDM service host (Oracle Linux 7/8 or Red Hat Enterprise Linux 8) with 2 CPUs, 4 GB RAM, and 100 GB disk space.
    • Install ZDM software from Oracle’s website.
    • Configure the ZDM configuration file (zdm_service_nodes.rsp) with source and target database details:
      ZDM_SRC_DB=source_db_name
      ZDM_TGT_DB=target_db_name
      ZDM_SRC_HOST=source_exadata_ip
      ZDM_TGT_HOST=azure_exadata_ip
      ZDM_MIGRATION_METHOD=ONLINE_PHYSICAL
    • Run precheck: /u01/app/zdm/bin/zdmcli -precheck -config zdm_service_nodes.rsp.
  2. Provision Target Exadata on Azure: Follow the provisioning steps in Section 3 to create Exadata Infrastructure, VM Cluster, and target database (same version as source, e.g., 19c). Ensure network connectivity via Azure ExpressRoute or VPN (ports 1521, 22 open).
  3. Configure Data Guard:
    • Enable archive logging and force logging on the source database:
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE FORCE LOGGING;
    • Create standby redo log group:
      ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('+DATA') SIZE 200M;
    • Run ZDM migration command to set up Data Guard:
      /u01/app/zdm/bin/zdmcli migrate database -sourcedb source_db_name -targetdb target_db_name -method ONLINE_PHYSICAL -config zdm_service_nodes.rsp
    • ZDM automates RMAN backup, transfer to Azure Files/Object Storage, and restore.
  4. Synchronize Databases: ZDM configures the standby database on Azure Exadata and starts real-time replication. Monitor synchronization:
    SELECT THREAD#, SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG WHERE DEST_ID = 2;
  5. Validate Standby Database:
    • Open the standby in read-only mode:
      ALTER DATABASE OPEN READ ONLY;
    • Test queries and application connectivity.
    • Check ZDM job status: /u01/app/zdm/bin/zdmcli query job -jobid <job_id>.
  6. Perform Switchover:
    • Initiate Data Guard switchover:
      /u01/app/zdm/bin/zdmcli migrate database -switchover -sourcedb source_db_name -targetdb target_db_name
    • Update application connection strings to point to the Azure database.
    • Verify primary role: SELECT DATABASE_ROLE FROM V$DATABASE;.
  7. Post-Migration Validation:
    • Validate data integrity (e.g., row counts, checksums).
    • Test performance with Oracle Real Application Testing (RAT).
    • Configure backups using OCI Object Storage:
      CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=libopc.so';
      CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
    • Decommission the source database after validation.
  8. Monitor and Optimize:
    • Use Oracle Enterprise Manager or Azure Monitor to track performance.
    • Optimize Exadata features (e.g., Smart Scan) if needed.
    • Document the process and train staff.

Alternative ZDM Workflows

4.5 Python Integration in Exadata Migration

Python is a powerful tool for automating and validating Oracle Exadata migrations, aligning with the AI and Python focus of AI Python Solutions. Here are some ways to use Python:

Explore our Python scripts for migration automation on GitHub, including ZDM Automation Script and Data Validation Script.

Recommended Approach

5. Technical Challenges and Potential Issues

Migrating to Oracle Exadata on Azure involves coordination between Azure and Oracle technologies, introducing potential challenges. Since the service became available in December 2023, some issues may stem from its relative novelty.

Technical Challenges

  1. Network Configuration:
    • Issue: Azure Exadata requires 13 IP addresses for the client subnet, compared to 3 for OCI, which may conflict with existing VNet configurations.
    • Mitigation: Plan IP address allocation carefully and configure route tables and network virtual appliances (e.g., Azure Firewall) for connectivity.
  2. Exadata-Specific Feature Dependencies:
    • Issue: On-premises Exadata databases may rely on features like Smart Scan, Smart Flash Cache, or storage indexes, which require adjustment when migrating to Azure Exadata due to differences in hardware or configuration.
    • Mitigation: Test performance in a non-production environment with Exadata features disabled to establish a baseline. Add physical indexes or optimize SQL as needed.
  3. Database Version Compatibility:
    • Issue: Azure Exadata supports Oracle Database versions 11g to 19c, with earlier versions requiring upgrades. Cross-version migrations may introduce compatibility issues.
    • Mitigation: Use Data Pump or GoldenGate for cross-version migrations, and test thoroughly in Dev/UAT environments.
  4. Performance Tuning:
    • Issue: Post-migration performance may differ due to changes in IOPS (30–70% reduction) or storage throughput (up to 90% reduction) compared to on-premises Exadata.
    • Mitigation: Use Oracle Real Application Testing (RAT) to simulate workloads and tune performance before production migration.
  5. Azure Policy Restrictions:
    • Issue: Policies prohibiting untagged resources or enforcing naming conventions may block OracleSubscription resource creation.
    • Mitigation: Update Azure policies to allow untagged resources during onboarding.
  6. Bandwidth and Latency:
    • Issue: Large database migrations (e.g., multi-TB) require high bandwidth for backup transfers or Data Guard replication, and latency between on-premises and Azure may affect performance.
    • Mitigation: Use Azure ExpressRoute for high-speed connectivity and optimize network configurations.
  7. Security and Compliance:
    • Issue: Configuring Transparent Data Encryption (TDE) and network security (e.g., Azure Key Vault, TLS 1.2) may introduce complexity.
    • Mitigation: Follow Oracle’s best practices for TDE and Azure’s security guidelines for Key Vault integration.
  8. Support Coordination:
    • Issue: Resolving issues may require coordination between Oracle and Microsoft support, potentially delaying response times.
    • Mitigation: Engage Oracle’s platinum support for severity-one cases and maintain clear communication channels with both vendors.
  9. ZDM-Specific Challenges:
    • Issue: ZDM setup requires a dedicated service host and expertise in configuring Data Guard, RMAN, or GoldenGate, which may be complex for teams unfamiliar with the tool.
    • Mitigation: Train staff on ZDM workflows and leverage Oracle’s documentation or professional services.
    • Issue: Network misconfigurations (e.g., firewall rules, latency) can disrupt ZDM’s Data Guard synchronization or backup transfers.
    • Mitigation: Pre-validate network connectivity and use Azure ExpressRoute for reliable performance.

Known Issues Since December 2023

6. Recommendations

7. Conclusion

Migrating on-premises Oracle Exadata to Oracle Exadata on Azure offers organizations the opportunity to leverage cloud scalability, high availability, and performance while maintaining compatibility with existing Oracle workloads. For AI practitioners, Exadata’s high-performance architecture accelerates data preprocessing and analytics for machine learning models, seamlessly integrating with Python-based frameworks like pandas, PyTorch, or TensorFlow. By understanding Exadata’s unique features, selecting the appropriate Azure deployment option, and following a structured migration process—particularly leveraging Oracle ZDM for complex, near-zero downtime migrations—organizations can ensure a successful transition. Testing in Dev and UAT environments before production deployment is critical to mitigate risks and address technical challenges, such as network configuration, performance tuning, and support coordination. With careful planning, Python automation, and execution, Oracle Exadata on Azure can deliver a robust, cost-effective solution for modern database and AI workloads.

Explore related Python scripts for migration automation on our GitHub repository or check out our other resources on AI Python Solutions.