Oracle Database@Azure¶
When to keep Oracle, how Oracle Database@Azure works, Exadata in Azure datacenters, low-latency Azure integration, MACC consumption credits, and migration tools (ZDM, Data Guard, GoldenGate).
When to choose Oracle Database@Azure
Choose Oracle Database@Azure when you cannot or should not migrate off Oracle -- deep PL/SQL codebases (100K+ lines), applications certified only on Oracle (EBS, PeopleSoft, Siebel), RAC/Exadata performance requirements, or an incremental migration strategy where individual databases will be displaced over 2-3 years while gaining immediate Azure integration for analytics and AI.
1. What is Oracle Database@Azure¶
Oracle Database@Azure is Oracle-managed Exadata infrastructure physically co-located in Azure datacenters with a low-latency cross-connect to Azure services. It is not Oracle Cloud Infrastructure (OCI) -- it runs within the Azure environment with Azure networking, identity, and billing integration.
1.1 Architecture¶
flowchart TB
subgraph Azure["Azure Datacenter"]
subgraph AzureServices["Azure Services"]
VNET[Azure VNet]
ENTRA[Entra ID]
MONITOR[Azure Monitor]
FABRIC[Microsoft Fabric]
ADF[Azure Data Factory]
AI[Azure AI Foundry]
end
subgraph OracleInfra["Oracle-Managed Infrastructure"]
EXADATA[Exadata Infrastructure]
VM_CLUSTER[VM Cluster]
ORACLE_DB[(Oracle Database)]
ASM[ASM Storage]
end
VNET ---|< 2ms latency| EXADATA
ENTRA --> VM_CLUSTER
MONITOR --> VM_CLUSTER
ORACLE_DB -->|Fabric Mirroring| FABRIC
ORACLE_DB -->|ADF connector| ADF
end 1.2 Key characteristics¶
| Characteristic | Detail |
|---|---|
| Infrastructure | Oracle Exadata X9M/X10M hardware in Azure datacenters |
| Management | Oracle manages Exadata infrastructure; customer manages databases |
| Networking | Direct VNet integration, < 2ms latency to Azure services |
| Identity | Entra ID for Azure portal access; Oracle users for database access |
| Billing | Infrastructure charges through Azure bill (MACC eligible); Oracle license charges through Oracle |
| Provisioning | Azure Portal or Azure CLI for infrastructure; Oracle tools for database |
| Monitoring | Azure Monitor for infrastructure; Oracle Enterprise Manager or Azure Monitor for database |
| Regions | Available in select Azure regions (expanding) |
| Gov regions | Roadmap (not yet available in Azure Government) |
2. When Oracle Database@Azure makes sense¶
2.1 Decision criteria¶
| Factor | Displace Oracle | Keep Oracle (DB@Azure) |
|---|---|---|
| PL/SQL codebase size | < 50,000 lines | > 100,000 lines |
| Application certification | Flexible (supports SQL Server/PostgreSQL) | Oracle-only (EBS, PeopleSoft, Siebel) |
| Oracle-specific features | Few (standard OLTP) | Many (RAC, AQ, Spatial, VPD, OLS) |
| Migration timeline | Acceptable (6-12 months) | Cannot tolerate downtime or risk |
| Budget for conversion | Available (\(150K-\)1M+) | Not available or ROI insufficient |
| DBA skills | Willing to reskill | Deep Oracle expertise, retention desired |
| Strategic direction | Consolidate on Azure-native | Incremental displacement over 2-3 years |
2.2 Typical Oracle Database@Azure scenarios¶
Scenario 1: EBS back-end database. Oracle E-Business Suite requires Oracle Database. Move the database to Oracle DB@Azure, gain Azure networking and Fabric analytics integration, and plan to displace EBS itself (to Dynamics 365, SAP on Azure, or custom) on a longer timeline.
Scenario 2: Complex data warehouse. A 50 TB Oracle Data Warehouse with 200+ materialized views, 500+ stored procedures, and hundreds of Oracle-specific SQL constructs. Conversion cost exceeds $2M and would take 18+ months. Move to DB@Azure now, mirror to Fabric for modern analytics, and displace individual workloads to Fabric SQL Endpoint or Databricks SQL over time.
Scenario 3: RAC-dependent OLTP. An active-active RAC cluster serving a 24/7 mission-critical application that cannot tolerate the active-passive model of Azure SQL MI failover groups. Move to DB@Azure to retain RAC while gaining Azure integration.
3. Provisioning Oracle Database@Azure¶
3.1 Prerequisites¶
- Azure subscription with sufficient quota
- Oracle Cloud Infrastructure (OCI) tenancy (created automatically if needed)
- Entra ID tenant for Azure portal access
- VNet with delegated subnet for Exadata infrastructure
3.2 Provisioning via Azure CLI¶
# Register the Oracle.Database resource provider
az provider register --namespace Oracle.Database
# Create Exadata infrastructure
az oracle-database cloud-exadata-infrastructure create \
--resource-group rg-oracle-prod \
--name exadata-prod-01 \
--location eastus \
--zone 1 \
--compute-count 2 \
--storage-count 3 \
--shape Exadata.X9M
# Create VM cluster on the infrastructure
az oracle-database cloud-vm-cluster create \
--resource-group rg-oracle-prod \
--name vmcluster-prod-01 \
--location eastus \
--cloud-exadata-infrastructure-id /subscriptions/.../exadata-prod-01 \
--cpu-core-count 4 \
--data-storage-size-in-tbs 2 \
--db-node-storage-size-in-gbs 120 \
--memory-size-in-gbs 60 \
--subnet-id /subscriptions/.../subnets/oracle-subnet \
--vnet-id /subscriptions/.../virtualNetworks/vnet-prod \
--ssh-public-keys "$(cat ~/.ssh/id_rsa.pub)" \
--hostname vmcluster-prod \
--domain oracle.internal \
--license-model BringYourOwnLicense \
--gi-version 19.0.0.0
# Create a database on the VM cluster
az oracle-database db-node list \
--resource-group rg-oracle-prod \
--cloud-vm-cluster-name vmcluster-prod-01
3.3 Database creation (Oracle tools)¶
After the VM cluster is provisioned, use Oracle Database tools to create databases:
# Connect to the VM cluster node via SSH
ssh -i ~/.ssh/id_rsa opc@<vm-cluster-ip>
# Create a database using DBCA (Database Configuration Assistant)
dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbName FEDDB \
-sid FEDDB \
-characterSet AL32UTF8 \
-memoryPercentage 40 \
-emConfiguration NONE \
-datafileDestination +DATA \
-recoveryAreaDestination +RECO \
-storageType ASM \
-enableArchive true
4. Migrating to Oracle Database@Azure¶
4.1 Oracle Zero Downtime Migration (ZDM)¶
ZDM automates Oracle-to-Oracle migration with minimal downtime.
# Install ZDM on a separate Linux host
# (Download from Oracle Technology Network)
# Configure ZDM
zdmcli migrate database \
-sourcedb FEDDB \
-sourcenode oracle-onprem.agency.gov \
-srcauth zdmauth \
-targetnode <db-azure-node-ip> \
-tgtauth zdmauth \
-rsp /opt/zdm/migration/response.rsp \
-eval # Evaluation mode first
# Execute migration after successful evaluation
zdmcli migrate database \
-sourcedb FEDDB \
-sourcenode oracle-onprem.agency.gov \
-srcauth zdmauth \
-targetnode <db-azure-node-ip> \
-tgtauth zdmauth \
-rsp /opt/zdm/migration/response.rsp
4.2 Data Guard for migration¶
Use Oracle Data Guard to establish a physical standby on Oracle DB@Azure, then switchover.
-- On source (on-premises): Configure Data Guard
-- 1. Enable ARCHIVELOG mode
ALTER DATABASE ARCHIVELOG;
-- 2. Enable Force Logging
ALTER DATABASE FORCE LOGGING;
-- 3. Configure standby redo logs
ALTER DATABASE ADD STANDBY LOGFILE
GROUP 4 SIZE 200M,
GROUP 5 SIZE 200M,
GROUP 6 SIZE 200M;
-- 4. Set Data Guard parameters
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(FEDDB,FEDDB_STBY)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=FEDDB_STBY ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=FEDDB_STBY';
ALTER SYSTEM SET FAL_SERVER=FEDDB_STBY;
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA/FEDDB/','+DATA/FEDDB_STBY/' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+DATA/FEDDB/','+DATA/FEDDB_STBY/' SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
-- On target (Oracle DB@Azure): Create standby
-- (Use RMAN DUPLICATE for initial standby creation)
-- Switchover (when ready for cutover)
-- On primary:
ALTER DATABASE SWITCHOVER TO FEDDB_STBY;
-- On new primary (DB@Azure):
ALTER DATABASE OPEN;
4.3 GoldenGate for zero-downtime migration¶
For workloads requiring zero downtime, Oracle GoldenGate provides real-time replication.
# Configure GoldenGate Extract on source
GGSCI> ADD EXTRACT ext_feddb, TRANLOG, BEGIN NOW
GGSCI> ADD EXTTRAIL /ggs/trail/et, EXTRACT ext_feddb
GGSCI> ADD EXTRACT pump_feddb, EXTTRAILSOURCE /ggs/trail/et
GGSCI> ADD RMTTRAIL /ggs/trail/rt, EXTRACT pump_feddb
# Configure GoldenGate Replicat on target (DB@Azure)
GGSCI> ADD REPLICAT rep_feddb, EXTTRAIL /ggs/trail/rt
GGSCI> START EXTRACT ext_feddb
GGSCI> START EXTRACT pump_feddb
GGSCI> START REPLICAT rep_feddb
# Monitor lag
GGSCI> INFO ALL
GGSCI> LAG EXTRACT ext_feddb
GGSCI> LAG REPLICAT rep_feddb
5. Azure integration patterns¶
5.1 Fabric Mirroring for Oracle (preview)¶
Fabric Mirroring for Oracle replicates Oracle Database@Azure tables to OneLake for analytics.
Oracle DB@Azure ──► Fabric Mirroring ──► OneLake (Delta Lake)
│
┌───────────────┼────────────────┐
│ │ │
dbt models Power BI Purview
(bronze/silver/gold) (Direct Lake) (lineage)
This enables CSA-in-a-Box analytics on Oracle data without any data movement infrastructure to build or maintain.
5.2 Azure Data Factory Oracle connector¶
For databases not yet supported by Fabric Mirroring, ADF provides a proven Oracle connector.
{
"name": "OracleAtAzureLinkedService",
"properties": {
"type": "Oracle",
"typeProperties": {
"connectionString": {
"type": "SecureString",
"value": "Host=<exadata-ip>;Port=1521;SID=FEDDB;User Id=adf_reader;Password=***;"
}
},
"connectVia": {
"referenceName": "SelfHostedIR",
"type": "IntegrationRuntimeReference"
}
}
}
5.3 Purview integration¶
Microsoft Purview can scan Oracle Database@Azure for catalog and classification:
- Automatic scanning: Purview discovers tables, views, and stored procedures
- Classification: Applies PII, CUI, PHI classifications to columns
- Lineage: Tracks data flow from Oracle through ADF/Fabric to analytics
6. MACC and licensing¶
6.1 MACC credit applicability¶
| Cost component | MACC eligible | Billed through |
|---|---|---|
| Exadata infrastructure (compute + storage) | Yes | Azure invoice |
| Azure networking (VNet, Private Endpoints) | Yes | Azure invoice |
| Azure Monitor, Log Analytics | Yes | Azure invoice |
| Oracle Database license (BYOL) | No | Oracle contract |
| Oracle Database license (subscription) | No | Oracle contract |
| Oracle support (22% annual) | No | Oracle contract |
| GoldenGate license | No | Oracle contract |
6.2 Licensing options¶
| Option | Description | Best for |
|---|---|---|
| BYOL (Bring Your Own License) | Use existing Oracle licenses | Organizations with active Oracle licenses and support |
| License included | Oracle license included in DB@Azure pricing | New deployments, no existing licenses |
| ULA migration | Certify ULA and apply to DB@Azure | Organizations exiting a ULA |
7. Incremental displacement strategy¶
Oracle DB@Azure enables a phased displacement strategy:
Year 1: Move all Oracle to DB@Azure
Enable Fabric Mirroring for analytics
Begin CSA-in-a-Box deployment
Year 2: Displace Tier 2 databases (standard OLTP)
→ Azure SQL MI or PostgreSQL
Retain Tier 1 databases on DB@Azure
Year 3: Evaluate Tier 1 displacement
→ Convert remaining PL/SQL
→ Or retain on DB@Azure long-term
Each displaced database:
1. Already has analytics via Fabric Mirroring
2. Already has governance via Purview
3. Just needs schema conversion + data migration
4. Application cutover with connection string change
This approach reduces risk by separating the infrastructure migration (Year 1, low risk) from the database engine migration (Years 2-3, medium-high risk).
8. Limitations and considerations¶
| Consideration | Detail |
|---|---|
| Azure Gov availability | Oracle DB@Azure is not yet available in Azure Government regions. Federal workloads requiring Gov region deployment should evaluate timeline with Microsoft/Oracle. |
| Networking | Requires a delegated subnet in the VNet. Cannot share subnet with other Azure services. |
| Oracle licensing | Oracle license costs are NOT eliminated. Only infrastructure costs are optimized. |
| Management split | Oracle manages Exadata hardware; customer manages database. Azure Portal for infrastructure, Oracle tools for database. |
| Patching | Oracle Critical Patch Updates (CPUs) are customer-managed on the database layer. Exadata infrastructure patching is Oracle-managed. |
| Backup | Oracle RMAN for database backups. Can target Azure Blob Storage via Oracle Database Backup Cloud Module. |
| Max scale | Quarter rack to full rack Exadata configurations. Multiple racks for larger deployments. |
Maintainers: csa-inabox core team Last updated: 2026-04-30