Oracle Database@Google Cloud: Connecting Google Cloud Applications with Exadata
GCP application integration

Oracle Database@Google Cloud: Connecting Google Cloud Applications with Exadata

Oracle AI Database@Google Cloud puts Exadata in the same data center as your Google Cloud workloads. The integration path is short, but it has a few sharp edges: DNS visibility, non-transitive peering, serverless egress and listener redirects. Here is the path end to end, and how to debug it when it breaks.

Exadata Multi-Cloud Series · Google Cloud Integration Guide
GKE appCloud Run DNS Firewall Routes Listener TLS
On this page
  1. 01 · A Short Path With Sharp Edges
  2. 02 · How the Network Fits Together
  3. 03 · Getting Each Runtime Onto the Private Path
  4. 04 · DNS, Firewall Rules and Routes
  5. 05 · When the App Cannot Reach the Database
  6. 06 · Pitfalls to Avoid Before Go-Live
  7. 07 · Beyond Connectivity: Identity, Monitoring and Data
  8. 08 · Key Takeaways
  9. 09 · Frequently Asked Questions

01 · A Short Path With Sharp Edges

Integration brief · Google Cloud applications to Exadata

"It works from the VM. It fails from GKE and Cloud Run."

That sentence turns up in a lot of first-week tickets on Oracle AI Database@Google Cloud (launched in September 2024 as Oracle Database@Google Cloud). The Exadata VM cluster is running, a Compute Engine VM in the same VPC connects in milliseconds, and then the containerised version of the same application cannot reach the database at all. The database is fine. The difference is in how each Google Cloud runtime resolves names and sends packets.

Google Cloud networking has its own rules that Oracle teams coming from on-premises or OCI do not always expect: VPCs are global, VPC Network Peering is not transitive, serverless products need explicit VPC egress, and private DNS zones are visible only to the networks they are bound to. None of these is hard on its own. Together, they decide whether every application reaches the database on the first try.

01The Exadata VM cluster gets a client subnet and a backup subnet tied to your VPC. Applications connect over private addresses in the same data center.
02GKE needs VPC-native pods and Cloud Run needs VPC egress. Without them, traffic never reaches the private SCAN addresses.
03When something fails, check in a fixed order: DNS, firewall, routes, listener, TLS.

02 · How the Network Fits Together

Answer: When you create an Exadata VM cluster in Oracle AI Database@Google Cloud, you attach it to a VPC and give it two address ranges: a client subnet for application traffic and a backup subnet for backups. The SCAN listener and node VIPs live in the client range, and Google Cloud workloads reach them over private routing in the same region.

The Exadata hardware itself sits in an Oracle-operated OCI child site inside the Google Cloud data center. OCI's control plane in a parent region builds, patches and scales the infrastructure. What your applications see is a set of private IP addresses on your network, published under host names in a private DNS zone.

The figure below shows the components most designs include. Compute Engine VMs, GKE pods and Cloud Run services share a set of app subnets in the customer VPC. They converge on the client subnet, where the SCAN and VIP addresses live. Cloud DNS answers for the SCAN name. Backups leave through the backup subnet. The OCI parent region sits off to the side as the control plane.

Google Cloud Applications to Exadata: Network Topology Google Cloud region (Oracle AI Database@Google Cloud) Customer VPC App subnets Oracle-operated Exadata site OCI parent region Client subnet Backup subnet Compute Engine VMs GKE VPC-native pods Cloud Run Direct VPC egress Client VNICs SCAN + node VIPs Backup VNICs To backup targets Cloud DNS Private zone SCAN records VPC firewall Egress to 1521 same data center Exadata VM cluster ExaDB-D or XS Exadata servers Smart Scan Control plane Build, patch Backup Object Storage backups App to database OCI control plane Backup traffic Name resolution On-premises clients reach the same client subnet over Cloud Interconnect or HA VPN, which needs route advertisement and DNS forwarding.
Figure 1 · Compute Engine, GKE and Cloud Run reach the Exadata VM cluster through the client subnet in the same Google Cloud data center

The blue arrow labelled "same data center" is the reason to use Database@ at all: application-to-database round trips stay inside one facility. The orange backup path and the red control-plane path never carry application traffic, so firewall rules for applications only need to cover the client subnet.

Range Used for Plan for
Client subnet SCAN, node VIPs, client VNICs Enough addresses for the cluster now and after scaling out
Backup subnet Backup traffic from the VM cluster Must not overlap any range the VPC can see
App subnets Compute Engine, GKE nodes and pods, Cloud Run egress Secondary ranges for GKE pods and services
On-premises ranges Clients over Cloud Interconnect or HA VPN Advertised through Cloud Router; no overlap with the above

03 · Getting Each Runtime Onto the Private Path

Answer: Compute Engine VMs reach the client subnet directly. GKE clusters should be VPC-native so pod addresses are routable. Cloud Run and Cloud Run functions need Direct VPC egress or a Serverless VPC Access connector, with private ranges routed into the VPC. On-premises clients come in over Cloud Interconnect.

Compute Engine

The simplest case. A VM in an app subnet of the same VPC routes to the client subnet with the VPC's own routes. You need an egress firewall rule if your VPC denies egress by default, and the database-side rules must allow the app subnet range.

GKE

Use VPC-native clusters, where pods get addresses from a secondary range of the node subnet. Those addresses are routable inside the VPC, so the database sees real pod source IPs and your allow rules can name the pod range. Be careful with egress NAT or masquerading configurations that rewrite pod addresses to node addresses: either is fine, but your firewall rules must match what the database actually sees. Store the database wallet or credentials as a Kubernetes secret, ideally synced from Secret Manager.

Cloud Run

Cloud Run services do not live in your VPC. Configure Direct VPC egress (or a Serverless VPC Access connector) and route at least private ranges through it. Without that setting the service tries to reach the SCAN address over its default egress and times out. Keep connection pools small: each instance opens its own pool, and autoscaling can multiply sessions quickly.

Runtime Network requirement Common mistake
Compute Engine App subnet in the same or a peered VPC Egress denied by a broad firewall policy
GKE VPC-native cluster, pod range allowed Allowing node IPs while pods keep their own addresses
Cloud Run Direct VPC egress or connector, private ranges routed No VPC egress configured at all
On-premises Interconnect or HA VPN, Cloud Router advertisements Client subnet range not advertised to on-prem

04 · DNS, Firewall Rules and Routes

Answer: Bind the database's private DNS zone to every VPC with clients, using DNS peering zones for other VPCs and an inbound server policy for on-premises forwarding. Allow TCP 1521 (and 2484 for TLS) from client ranges to the whole client subnet. Remember that VPC Network Peering is not transitive.

Applications should always connect to the SCAN host name. The service publishes the cluster's host names in a private zone visible to the VPC you attached the cluster to. Any other VPC, and any on-premises network, needs an explicit way to see that zone. In Cloud DNS that means a DNS peering zone in the other VPC pointing at the database VPC, and for on-premises an inbound server policy whose entry addresses your corporate DNS servers forward the database domain to.

# From each client network: VM, GKE debug pod, Cloud Run job, on-prem host
nslookup exa-clu1-scan.db.example.internal     # expect the SCAN IPs
nc -zv exa-clu1-scan.db.example.internal 1521  # TCP reachability
tnsping exa-clu1-scan.db.example.internal:1521/app_svc.example.internal

For firewall rules, think in two directions. On the Google Cloud side, VPC firewall rules or a network firewall policy must permit egress from the app ranges to the client subnet on the listener ports. On the database side, the security rules that guard the VM cluster's client interfaces must permit ingress from the same app ranges. Allow the whole client subnet, not only the three SCAN addresses, because the SCAN listener redirects each connection to a node VIP.

Peering is not transitiveIf application VPC A peers with hub VPC B, and B is where the database is attached, A can reach B's own subnets but not ranges B learned from a third peering. Design with Shared VPC, direct peering to the database VPC, or a routing appliance, and confirm which topologies the service supports in your region.

05 · When the App Cannot Reach the Database

Answer: Check five things in order: name resolution, the TCP port, routes in both directions, the listener and service, and the TLS handshake. Fix the first check that fails and start again from the top, because a later check cannot pass while an earlier one fails.

Connection errors from Oracle clients are not very specific. A missing route, a dropped packet and an unresolvable host can all surface as ORA-12170 or a driver timeout. The decision flow below gives you a fixed sequence so two engineers debugging the same issue reach the same answer. Each question on the left is a check you can run from the failing client; each orange box on the right is the fix when the answer is no.

App Cannot Reach the Database: Troubleshooting Flow 1 Does the SCAN name resolve? nslookup from the client itself no Make the private zone visible: DNS peering for other VPCs, inbound server policy for on-prem yes 2 Is TCP 1521 open end to end? nc -zv scan-name 1521 no Add a VPC egress rule and database-side rules for the whole client subnet, not only SCAN IPs yes 3 Is there a route both ways? Check effective routes no VPC peering is not transitive. Export custom routes or advertise ranges on Cloud Router yes 4 Does the listener know the service? lsnrctl / srvctl status no Use the service name, start the service on its preferred instances, avoid SIDs yes 5 Does the TLS handshake complete? Port 2484, wallet, DN match no Distribute the CA certificate, check sqlnet.ora and the server certificate DN Connected: run the app test Fix the first failing hop, then restart at 1 Check passed Check failed: apply the fix
Figure 2 · Five checks in a fixed order, with the fix for each failure

The order matters. A TLS error is meaningless if the TCP port is closed, and a closed port tells you nothing if the client resolved the wrong address. The green "yes" arrows only move down once a check has passed from the failing client itself, not from a VM that happens to work.

  1. Run every test from the failing runtime. Use a debug pod in the same GKE namespace, or a Cloud Run job with the same egress settings. Tests from a working VM prove nothing about the failing path.
  2. Read the listener side. On a database node, lsnrctl status LISTENER_SCAN1 and srvctl status service -db CDB1 show whether the service is registered and running.
  3. Check effective routes. In the console or with gcloud, inspect the routes the client's VPC actually has, including peering and Cloud Router routes.
  4. Use VPC Flow Logs and firewall logging. Denied packets in firewall rules logging point straight at the missing rule.

06 · Pitfalls to Avoid Before Go-Live

Answer: Most connectivity problems on Oracle AI Database@Google Cloud are design issues that can be fixed before provisioning: overlapping ranges, assuming peering is transitive, serverless without VPC egress, firewall rules that cover only SCAN addresses, DNS visible in one VPC only, and applications pinned to one node.

The comparison below pairs each pitfall with its fix. Treat the left column as a design review checklist: if a reviewer cannot answer how the design avoids each one, the design is not finished.

Common Connectivity Pitfalls and the Fix for Each Pitfall Fix Overlapping CIDRs Client or backup range clashes with a peered VPC or on-prem Reserve ranges in IPAM before provisioning; check routes advertised over Interconnect Assuming peering is transitive App VPC peers with a hub, hub reaches the database Peer the app VPC directly, use Shared VPC, or route through an appliance Cloud Run without VPC egress Calls leave through public egress and time out Direct VPC egress or a Serverless VPC Access connector, private ranges routed Firewall allows SCAN IPs only First hop works, redirect to node VIP fails Allow the whole client subnet range on 1521 and 2484, plus ONS 6200 DNS zone visible in one VPC Works from VMs, fails from GKE or on-prem DNS peering zones per VPC, forwarding for on-prem, test from each network Connecting by IP to one node Outage on every rolling patch SCAN name, a dedicated service, FAN and Application Continuity Five of the six pitfalls are network or DNS design issues. Settle them before the VM cluster is provisioned, not after the first failed deployment.
Figure 3 · Six pitfalls seen in real Google Cloud deployments, each paired with its fix

The last row is the only one that is not a network issue. Exadata is a RAC cluster, and rolling patching restarts instances regularly. Applications that connect by IP to one node will see every maintenance window as an outage, however good the network design is.

APP_SVC =
 (DESCRIPTION =
   (CONNECT_TIMEOUT=90)(RETRY_COUNT=20)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)
   (ADDRESS_LIST = (LOAD_BALANCE=on)
     (ADDRESS = (PROTOCOL=TCP)(HOST=exa-clu1-scan.db.example.internal)(PORT=1521)))
   (CONNECT_DATA = (SERVICE_NAME=app_svc.example.internal)))

07 · Beyond Connectivity: Identity, Monitoring and Data

Answer: Once the data path works, connect the operations layer: Google Cloud IAM controls who can manage the service, Cloud Monitoring and Cloud Logging receive metrics and events, and data can flow to BigQuery or Vertex AI for analytics and AI use cases.

Keep the layers clear. Google Cloud IAM roles decide who can create, scale or delete Exadata resources from the console and APIs. Database users and roles still decide who can log in and what they can read. Do not grant broad project roles to application service accounts just because they talk to the database: they need network reach and database credentials, not permission to manage the cluster.

For analytics and AI, the common patterns are replicating or exporting selected data into BigQuery, and calling Vertex AI models from applications that read Oracle data. Each path adds its own network and identity requirements, so design it as a separate integration with its own review, not as a side effect of opening the database to the whole VPC.

Layer Google Cloud service What it controls
Management access Cloud IAM Who can provision, scale and delete Exadata resources
Observability Cloud Monitoring, Cloud Logging Metrics, events and audit trail for the service
Analytics BigQuery Reporting on data moved or replicated from Oracle
AI Vertex AI Models called by applications that use Oracle data
Database access Oracle users, roles, wallets Who can log in and what they can read

On Google Cloud the shortest path to Exadata is also the most private one. Most failures come from a runtime that was never put on that path.

08 · Key Takeaways

  1. Two ranges per VM cluster. A client subnet for SCAN and VIPs, a backup subnet for backups. Neither may overlap anything the VPC can see.
  2. Put each runtime on the private path. VPC-native GKE, Cloud Run with VPC egress, and Interconnect with advertised routes for on-premises.
  3. Peering is not transitive. Hub designs need Shared VPC, direct peering or an appliance; confirm what the service supports.
  4. Debug in a fixed order. DNS, firewall, routes, listener, TLS, always from the failing runtime itself.
  5. Design for RAC behaviour. SCAN name, a dedicated service, FAN and Application Continuity turn patching into a non-event.

09 · Frequently Asked Questions

How do Google Cloud applications connect to Exadata on Oracle Database@Google Cloud?

The Exadata VM cluster has a client subnet attached to your VPC. Applications in that VPC, or networks that can route to it, connect to the SCAN host name on TCP 1521, or 2484 for TLS, over private addresses in the same Google Cloud data center.

Can Cloud Run connect to Oracle Exadata in Google Cloud?

Yes. Configure Direct VPC egress or a Serverless VPC Access connector so that traffic to private ranges goes into the VPC, make sure the service can resolve the database DNS zone, and allow its egress range on the listener ports.

Does GKE need special configuration to reach Exadata?

Use a VPC-native cluster so pod addresses are routable, allow the pod or node range on the database side depending on whether egress is masqueraded, and check that CoreDNS forwards the database domain to Cloud DNS.

Why can my VM connect but my peered VPC cannot?

VPC Network Peering is not transitive and private DNS zones are bound to specific networks. The peered VPC needs a route to the client subnet and a DNS peering zone for the database domain.

What should I check first when the application cannot connect?

Check in order: whether the SCAN name resolves from the failing client, whether TCP 1521 is open to the whole client subnet, whether routes exist in both directions, whether the listener has the service registered, and whether TLS completes if you use TCPS.

About the author. ExaGuru Oracle Cloud architects design and run Exadata, ExaCC and multi-cloud Oracle estates for enterprise customers, and teach the same architectures in live, hands-on labs.

Learn this hands-on

Practice Exadata, OCI and multi-cloud architectures in live labs with a practicing consultant.