Oracle → Azure: The DBA's Rosetta Stone
You have 14+ years of Oracle (RAC, Data Guard, ERP, SOA, BI, OAM, APEX). This page maps every Oracle concept to its Azure equivalent so you can recall Azure architecture by connecting it to what you already know.
The Big Picture
Detailed Mapping
| Oracle | Azure | What Changes |
|---|---|---|
| Oracle RAC | Business Critical tier | Shared-everything → shared-nothing 4-node AG with local NVMe SSD. No interconnect tuning. |
| Data Guard | Failover Groups | No archive log management. Async geo-rep + auto failover + single DNS endpoint. |
| Active Data Guard | Active Geo-Replication | Up to 4 readable secondaries. Manual failover. Each has its own connection string. |
| Flashback Database | Point-in-Time Restore | PITR creates a NEW database (7-35 days). For longer → LTR (10 years). |
| ASM | Managed Disks + Tiers | No ASMCMD. Azure handles striping/redundancy. You pick disk SKU. |
| CDB / PDB | SQL Managed Instance | MI = CDB. Cross-DB queries with USE [db]. SQL Agent + CLR + Linked Servers. |
| RMAN | Automated Backups | Zero scripts! Full weekly, diff 12-24h, log 5-10 min — all automatic. |
| AWR / ASH | Query Store + DMVs | Per-query plans continuously. More granular than AWR. Default on in Azure SQL DB. |
| ADDM | Intelligent Insights + Auto Tuning | ML-based continuous analysis. Can auto-force plans and create/drop indexes. |
| Oracle TDE | Azure TDE | Both AES-256. Azure TDE is ON BY DEFAULT. BYOK via Key Vault. |
| VPD | Row-Level Security | Same concept: filter rows per user/tenant. Different syntax. |
| Data Redaction | Dynamic Data Masking | Both mask at query time. Neither encrypts. |
| Unified Audit | Azure SQL Auditing | 3 destinations: Log Analytics, Storage, Event Hub. |
| Oracle Wallet | Azure Key Vault | Centralized across ALL Azure services. |
| DBMS_SCHEDULER | SQL Agent / Elastic Jobs | SQL Agent for MI/VM. Elastic Jobs for Azure SQL DB. |
| APEX | Power Apps / SWA | Power Apps = low-code. Static Web Apps = custom apps. |
| SOA Suite | Logic Apps + Service Bus | Visual workflow designer + reliable messaging. |
| OBIEE | Power BI | Native Azure SQL integration. Natural language Q&A. |
| OAM | Microsoft Entra ID | SSO + MFA + Conditional Access + PIM. |
| WebLogic | App Service / AKS | Managed Java/Node/.NET hosting or containers. |
Architecture & Infrastructure
| Oracle Concept | Azure Equivalent | Key Difference to Remember |
|---|---|---|
| Oracle Instance (SGA + background processes) | Azure SQL Database (logical server) | Azure abstracts the instance — you manage the database, not the engine. No ALTER SYSTEM needed. |
| CDB / PDB (Multitenant) | SQL Managed Instance | MI = one "instance" with multiple databases, like CDB/PDB. Cross-DB queries just work (USE db). |
| Oracle RAC (shared-everything cluster) | Elastic Pools / Business Critical tier | RAC shares storage + runs on multiple nodes. Azure Elastic Pools share resources across DBs. Business Critical has 4 replica nodes but doesn't share storage — each has local SSD. |
| ASM (Automatic Storage Management) | Azure Managed Disks + Storage tiers | ASM stripes across disks automatically. Azure handles striping at the storage layer. You pick disk SKU (Premium SSD, Ultra) — Azure does the rest. |
| Oracle Data Directory (data files, redo, archive) | Remote storage (GP) / Local SSD (BC) | General Purpose uses remote Premium Storage (like NFS-backed data files). Business Critical uses local NVMe SSD (like ASM on local flash). |
The biggest mental shift: In Oracle, you tune the instance (SGA, PGA, background processes). In Azure SQL, you tune the workload (queries, indexes, tier selection). The "instance" tuning is done by Microsoft.
High Availability & Disaster Recovery
| Oracle Concept | Azure Equivalent | Architecture Insight |
|---|---|---|
| Data Guard (Physical Standby) | Failover Groups | Data Guard = redo shipping to standby. Failover Groups = async geo-replication + automatic failover + single endpoint. No need to manage archive log shipping. |
| Data Guard (Logical Standby) | Active Geo-Replication | Up to 4 readable secondaries. Manual failover only. Like logical standby — secondaries are read-only but active. |
| RAC (local HA) | Business Critical tier | RAC provides local HA via shared-everything. Business Critical provides local HA via 4-node Always On AG with synchronous commit. Different architecture, same goal. |
| Fast-Start Failover (FSFO) | Automatic failover in Failover Groups | FSFO uses an Observer process. Azure uses built-in health detection with a configurable grace period (default 60 min). |
| Flashback Database | Point-in-Time Restore (PITR) | Flashback works in-place. PITR creates a new database — never overwrites the original. Retention: 7-35 days. |
| Maximum Availability (MAA) | Business Critical + Failover Groups | Oracle MAA = RAC + Data Guard + FSFO. Azure equivalent = BC tier (local HA) + Failover Group (cross-region DR). |
DP-300 key difference: Oracle Data Guard requires manual configuration of redo transport, apply processes, role transitions. Azure Failover Groups handle all of this automatically — you just define the group and the grace period.
Backup & Recovery
| Oracle Concept | Azure Equivalent | What Changes |
|---|---|---|
| RMAN (backup/restore) | Automated Backups | No more RMAN scripts! Azure takes full (weekly), differential (12-24h), log (5-10 min) backups automatically. |
| RMAN catalog | Long-Term Retention (LTR) | LTR stores backups up to 10 years in Azure Blob. Like RMAN catalog but fully managed. |
| Recovery Window | Backup retention (7-35 days) | Set retention period = your recovery window. Beyond that, use LTR policies. |
| Data Pump (export/import) | BACPAC / DMS | Data Pump = logical export. BACPAC = Azure's portable database format. DMS = Azure Database Migration Service for live migrations. |
| Flashback (table, database) | PITR + Deleted database restore | Flashback a table → no direct equivalent (use PITR). Flashback database → PITR to any second within retention. |
| Cross-platform transportable tablespaces | Azure DMS / SSMA (SQL Server Migration Assistant) | For Oracle → Azure SQL migrations specifically. SSMA converts Oracle schemas + PL/SQL to T-SQL. |
Migration tip from your experience: When migrating Oracle → Azure SQL, run SSMA assessment first. It flags PL/SQL constructs that won't convert (like autonomous transactions, varrays, Oracle-specific data types). Plan for these before you start.
Security
| Oracle Concept | Azure Equivalent | Architecture Note |
|---|---|---|
| Oracle TDE (tablespace encryption) | Azure TDE (database-level encryption) | Both use AES-256. Azure TDE is enabled by default. Oracle TDE requires wallet setup. Azure supports BYOK via Key Vault. |
| VPD (Virtual Private Database) | Row-Level Security (RLS) | VPD uses policy functions on tables. RLS uses security predicate functions + security policies. Same concept, different syntax. |
| Oracle Data Redaction | Dynamic Data Masking | Both mask data at query time without changing stored data. Neither encrypts data at rest. |
| Oracle Audit (Unified Audit) | Azure SQL Auditing → Log Analytics / Event Hub | Oracle writes to unified audit trail. Azure writes to Storage, Log Analytics, or Event Hub. |
| Oracle Vault (privilege control) | Azure RBAC + Entra ID | Oracle Vault restricts DBA access to specific schemas. Azure RBAC + Entra ID provides role-based access with MFA, conditional access, PIM. |
| Oracle Wallet (credential store) | Azure Key Vault | Wallet stores TDE keys, credentials. Key Vault stores keys, secrets, certificates. Key Vault is centralized across all services. |
| Oracle DBMS_CRYPTO | Always Encrypted | DBMS_CRYPTO = app-level encryption. Always Encrypted = column-level encryption where the DB engine never sees plaintext. More secure than app-level crypto. |
Critical difference: Oracle TDE encrypts tablespaces. Azure TDE encrypts the entire database (data files, log files, backups). You can NOT selectively encrypt certain filegroups in Azure SQL Database — it's all or nothing (and it's always on by default).
Performance Monitoring & Tuning
| Oracle Concept | Azure Equivalent | Key Insight |
|---|---|---|
| AWR (Automatic Workload Repository) | Query Store | AWR captures snapshots every hour. Query Store captures per-query execution plans + runtime stats continuously. Query Store is more granular than AWR for query-level analysis. |
| ASH (Active Session History) | sys.dm_exec_requests + sys.dm_exec_sessions | ASH samples active sessions every second. DMVs give you real-time session/request info. For historical data, use Query Store. |
| ADDM (Automatic Diagnostic Monitor) | Intelligent Insights + Automatic Tuning | ADDM analyzes AWR and recommends. Azure Intelligent Insights uses ML to detect anomalies. Automatic Tuning can auto-implement fixes (force plans, create/drop indexes). |
| SQL Tuning Advisor | Automatic Tuning + Query Store | Oracle Advisor suggests SQL profiles. Azure can automatically force good execution plans via FORCE_LAST_GOOD_PLAN. |
Wait Events (v$session_wait) | Wait Statistics (sys.dm_os_wait_stats) | Same concept, different catalog. Oracle waits → SQL Server waits. Key waits: PAGEIOLATCH_* (I/O), LCK_* (locks), CXPACKET (parallelism). |
| Explain Plan / Autotrace | Execution Plans (SET STATISTICS IO ON, actual/estimated plans) | Same concept. In SSMS: Ctrl+M for actual plan, Ctrl+L for estimated plan. Look for scans vs seeks, key lookups, sort warnings. |
| Oracle Statspack (legacy) | Query Store + Extended Events | Extended Events = Oracle trace files. Lightweight, targeted event tracing. |
| Enterprise Manager (Cloud Control) | Azure Monitor + Azure Portal Metrics | EM dashboard → Azure Portal metrics blade. EM alerts → Azure Monitor Alerts. EM performance hub → Query Performance Insight. |
DP-300 loves Query Store questions. Think of Query Store as "AWR on steroids" — it captures per-query plans (not just top SQL), lets you force specific plans (like SQL Profiles), and is enabled by default in Azure SQL DB.
Automation & Scheduling
| Oracle Concept | Azure Equivalent | When to Use |
|---|---|---|
| DBMS_SCHEDULER | SQL Agent (MI/VM) / Elastic Jobs (SQL DB) | DBMS_SCHEDULER = Oracle's built-in job scheduler. SQL Agent is the direct equivalent for MI/VM. Elastic Jobs replaces SQL Agent for Azure SQL DB. |
| DBMS_JOB (legacy) | Elastic Jobs | DBMS_JOB is deprecated in Oracle. Elastic Jobs is the modern Azure approach for Azure SQL Database. |
| Oracle Streams / GoldenGate | Change Data Capture (CDC) / DMS | Oracle replication tools. Azure CDC captures row-level changes. DMS handles live migrations. |
| Oracle Enterprise Manager Jobs | Azure Automation Runbooks | EM jobs run shell/SQL scripts on a schedule. Azure Automation runs PowerShell/Python runbooks with managed identity. |
| cron jobs (OS-level) | Azure Functions (Timer Trigger) | cron on Linux/Task Scheduler on Windows → Timer-triggered Azure Function. Serverless, auto-scaling, pay-per-execution. |
Application Architecture
| Oracle Concept | Azure Equivalent | Architecture Note |
|---|---|---|
| Oracle APEX | Power Apps / Static Web Apps | APEX = low-code DB-centric apps. Power Apps = low-code on Microsoft stack. For custom apps → Azure Static Web Apps + Azure SQL backend. |
| Oracle Forms | Power Apps or custom .NET/React apps | Forms is legacy. No direct equivalent — modernize to Power Apps or custom web apps. |
| Oracle SOA Suite | Azure Logic Apps + Service Bus + Event Grid | SOA Suite = BPEL orchestration. Logic Apps = cloud-native workflow orchestration. Service Bus = reliable messaging. Event Grid = event routing. |
| Oracle BI (OBIEE) | Power BI | OBIEE → Power BI. Both provide dashboards, reports, and semantic models. Power BI integrates natively with Azure SQL. |
| Oracle OAM (Access Manager) | Microsoft Entra ID (Azure AD) | OAM = web SSO + access policies. Entra ID = identity platform with SSO, MFA, Conditional Access, PIM. |
| Oracle WebLogic | Azure App Service / AKS | WebLogic = Java app server. App Service hosts Java/Node/.NET apps. AKS for containerized workloads. WebLogic on Azure VMs is also supported. |
| Oracle GoldenGate | Azure Data Factory / Synapse Link | GoldenGate = real-time replication. ADF = ETL/ELT orchestration. Synapse Link = real-time analytics bridge. |
Your Oracle SOA + OAM + BI background maps perfectly to the Azure integration story: Logic Apps (orchestration), Entra ID (identity), Power BI (analytics). When talking to customers with Oracle stacks, you can speak both languages — this is your superpower as a DCSA.
Pricing & Licensing
| Oracle Concept | Azure Equivalent | Cost Insight |
|---|---|---|
| Oracle Processor licensing | vCore model | Oracle charges per processor core. Azure vCore charges per virtual core. Mapping: 1 Oracle processor ≈ 1-2 vCores depending on tier. |
| Oracle Named User Plus | Pay-as-you-go or reserved capacity | NUP per-user licensing → Azure PAYG (no per-user DB fee). Reserved capacity saves up to 55%. |
| Oracle RAC license | Included in BC tier | RAC is an expensive add-on license. Azure Business Critical tier includes HA replicas at no extra license cost. |
| Data Guard license | Included | Data Guard requires Active Data Guard for readable standby (extra $). Azure Failover Groups include readable secondary. |
| Oracle Tuning/Diagnostic Pack | Included | These Oracle packs cost extra. Query Store, DMVs, Intelligent Insights — all included in Azure SQL at no extra charge. |
| Oracle Support (22% of license/year) | Included in compute cost | Oracle annual support is 22% of license. Azure includes all patches, updates, support in the compute price. |
This is your strongest migration argument for customers: Oracle licensing is per-processor + RAC + Data Guard + Tuning Pack + 22% annual support. In Azure, HA, DR, monitoring, and tuning are ALL INCLUDED. Azure Hybrid Benefit + Reserved Capacity can cut costs by up to 80%.
Quick Reference: Oracle → Azure Commands
| Task | Oracle | Azure SQL |
|---|---|---|
| Check database status | SELECT STATUS FROM V$INSTANCE; | SELECT DATABASEPROPERTYEX(DB_NAME(), 'Status'); |
| Active sessions | SELECT * FROM V$SESSION WHERE STATUS='ACTIVE'; | SELECT * FROM sys.dm_exec_sessions WHERE is_user_process = 1; |
| Running queries | SELECT * FROM V$SQL WHERE EXECUTIONS > 0; | SELECT * FROM sys.dm_exec_requests CROSS APPLY sys.dm_exec_sql_text(sql_handle); |
| Table sizes | SELECT segment_name, bytes/1024/1024 MB FROM DBA_SEGMENTS; | EXEC sp_spaceused 'TableName'; |
| Wait events | SELECT * FROM V$SESSION_WAIT; | SELECT * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC; |
| Explain plan | EXPLAIN PLAN FOR ... then SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); | SET STATISTICS IO ON; + Actual Execution Plan in SSMS |
| Index fragmentation | ANALYZE INDEX ... VALIDATE STRUCTURE; | SELECT * FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED'); |
| Backup | RMAN> BACKUP DATABASE PLUS ARCHIVELOG; | Automated. Manual: BACKUP DATABASE TO URL = 'https://storage.blob.core.windows.net/...' |
| Kill session | ALTER SYSTEM KILL SESSION 'sid,serial#'; | KILL <session_id>; |