OCI Multicloud Architect Professional study materials
OCI Multicloud Architect Professional study resources

Autonomous Database in OCI or Database@Azure: Choosing With a Latency Budget

OCI Multicloud Architect Professional · Put your knowledge to work in context.

All case studies

Autonomous Database in OCI or Database@Azure: Choosing With a Latency Budget

Fleetview runs a 400-pod AKS storefront in Azure East US and an Oracle transactional database. Option 1 is Autonomous Database Serverless 23ai in OCI Ashburn reached over Oracle Interconnect for Azure; Option 2 is Oracle Database@Azure Exadata in the same Azure region. The workload peaks at 9,000 read queries per second and 1,400 write transactions per second on 1.2 TB of data. The page latency budget is 120 ms p95 and a page issues six sequential database round trips. Measured interconnect RTT is 5 ms at 30% load and 14 ms at peak with retransmits visible on the circuit. Each pod opens 12 connections, and autoscaling takes the fleet from 80 to 400 pods in under three minutes. Compliance requires a regional standby with RPO at or below 5 seconds and RTO at or below 15 minutes, plus a quarterly switchover test. The last scale test hit the database's session limit at 8,400 sessions and the connection pool thrashed for 11 minutes.

1. Choose a placement and justify it with the numbers. State the conditions under which your answer flips.

Read the worked answer

Do the round-trip arithmetic before comparing features. Six sequential round trips at 5 ms is 30 ms of pure network time; at 14 ms it is 84 ms. Add application processing, TLS, JSON serialization and pool waits, and the 120 ms budget is breached at peak before the database does any work. The retransmits at peak mean the 14 ms figure is not stable - it will get worse under sustained load, which is exactly when revenue is highest.

Under the stated constraints - chatty page code, six round trips, a hard 120 ms p95, and a peak-load circuit that is already degrading - the defensible choice is Oracle Database@Azure Exadata in the same Azure region. Same-region round trips are sub-millisecond and unaffected by interconnect congestion, which converts 84 ms of network time into roughly nothing and leaves the budget for the database and application. The interconnect remains useful for backup, DR, and non-latency-sensitive integration, not for the hot path.

The answer flips if the application is refactored so a page issues one or two round trips (batching, a stored procedure returning a result set, server-side pagination). Two round trips at 5 ms is 10 ms, which fits comfortably, and then Autonomous Database Serverless in OCI wins on elasticity, operational simplicity, and cost, with no Exadata infrastructure commitment. It also flips if the circuit is capacity-managed and instrumented such that 5 ms is stable at 3x peak - but that is a claim you should prove with a load test over the interconnect, not accept from a vendor diagram.

A middle path exists: keep ADB in OCI, cache aggressively at the edge, and move heavy read fan-out to a read-only replica or materialized views so the hot path makes a single round trip.

2. The session limit and pool thrash must be fixed regardless of placement. Design the connection architecture.

Read the worked answer

The arithmetic explains the failure. 400 pods times 12 connections is 4,800 steady sessions, plus churn: each new pod opens 12 connections at once and each retiring pod closes them, so during a two-minute scale-out the real count spikes well above the steady state, and the database's session ceiling arrives at 8,400. When sessions are refused, application pools block, health checks fail, pods restart, and the cycle runs for 11 minutes. That is a pool thrash, not a database capacity problem.

Design:

  1. Cap per-pod pools small - three to five connections, with a hard maximum and a bounded wait queue. A pod handling a few concurrent requests does not need 12.
  2. Put a shared pooler in the path: a database-side or middle-tier pooler (Oracle Connection Manager or an equivalent) so 400 pods multiplex onto a few hundred backend sessions. This decouples pod count from database session count, which is the actual invariant that broke.
  3. Pre-warm and stagger. Scale-out should open connections gradually with jittered backoff, and scale-in should drain before closing, so the database sees a ramp, not a step.
  4. Use fast-fail events. Subscribe to FAN/ONS so pools evict dead connections immediately instead of discovering them on the next request and retrying into a busy database.
  5. Size the database for concurrent sessions, not only CPU. If the ceiling is a function of provisioned capacity, the base must be set from peak session count and raised before the marketing campaign, not during it.
  6. Test the actual shape: 80 to 400 pods in three minutes, sustained for 20 minutes, with a hard assertion that refused sessions stay at zero.

3. Design the DR topology and the switchover test plan, and identify what RTO measurement usually misses.

Read the worked answer

Topology. With Autonomous Database Serverless, use Autonomous Data Guard with a cross-region standby in a second OCI region, not in Azure - the standby is a managed OCI resource and the interconnect is not part of its replication path. With Database@Azure, Data Guard to a second Azure region hosting the same Exadata service, or to OCI if the tenancy standard requires a single Oracle-managed DR site. Prefer a data-loss mode that gives commit-level protection for the order path; a mode that acknowledges commits the standby has not received cannot honestly claim a 5 second RPO for the final transactions before failure.

Test plan:

  1. Planned switchover first, quarterly, in a defined window. It validates role transition, services, application reconnection, and monitoring, with zero data loss by construction.
  2. Unplanned failover separately, at least twice yearly, triggered by killing the primary rather than by a clean command. This is the test that exposes reconnection behaviour.
  3. Measure from the customer's perspective, not the database's. Start the clock at the last successful order and stop it at the first successful order after recovery.

What RTO measurement usually misses: connection re-establishment and DNS/TNS behaviour. A database that fails over in four minutes while the app tier keeps dialling a stale endpoint for another twenty has an RTO of twenty-four minutes. Verify that connection strings resolve through a role-aware service name with multiple addresses, that pools use fast application notification, and that in-flight transactions replay or fail fast rather than hanging. Add a synthetic order probe that runs continuously and records end-to-end recovery, and treat a failed probe test as a failed DR test even if the database reports success.