Chapter 18 · RAC and Clustered Oracle Concepts

Oracle RAC Architecture, Shared Database, Multiple Instances, Cache Fusion, and GCS/GES

Model Oracle RAC correctly as multiple Oracle instances—with separate SGAs/processes/redo threads—opening one shared database, coordinated by Cache Fusion, the Global Cache Service and Global Enqueue Service across a private interconnect.

Advanced120–140 minutesSingle-instance-to-RAC architecture worksheetOracle AI Database 26ai · RU 23.26.3 baselineRAC unavailable in Free; paid/topology-heavy commands labeledLast reviewed: August 2026

Learning outcomes

ServiceHub outgrows one database server and the platform team proposes “RAC so every query runs on two servers.” That is the wrong mental model. Oracle Real Application Clusters (RAC) lets multiple database instances—each with its own System Global Area (SGA), background processes and private redo/undo context—open and modify the same shared database files. Oracle coordinates those caches and locks across the cluster. RAC can improve availability and scale some concurrent workloads, but every cross-instance block dependency adds coordination work.

01

Distinguish database files from RAC instances and identify instance-specific versus shared structures.

02

Explain Cache Fusion, the Global Cache Service (GCS), Global Enqueue Service (GES), and Global Resource Directory (GRD).

03

Trace a current/consistent-read block from one instance cache to another over the private interconnect.

04

Use GV$INSTANCE/GV$PARAMETER/GV$THREAD and RAC process/wait evidence on an entitled cluster.

05

Build a Free architecture worksheet and explain why a second Free instance is not a RAC lab.

Generation-time baseline, licensing, topology, and tooling boundary

This chapter was reviewed against Oracle AI Database 26ai RU 23.26.3, SQL Developer 26.2, and SQLcl 26.2.1. Oracle AI Database Free is limited to 2 foreground CPU cores, 2 GB combined SGA/PGA RAM, 12 GB user data, one installation per logical environment, and receives no Release Update patches or Oracle Support service requests. Current 26ai licensing marks Oracle Real Application Clusters (RAC) unavailable in Free, SE2-ODA, BaseDB SE, BaseDB EE, and BaseDB EE-HP; RAC is an extra-cost option on EE/EE-ES and included with BaseDB EE-EP and ExaDB. Actual RAC requires Oracle Grid Infrastructure/Clusterware, multiple cluster nodes, shared database storage, a low-latency private interconnect, public/VIP/SCAN networking, and a certified platform. Mandatory Free labs therefore validate single-instance workload/service/storage facts and RAC design decisions; they never attempt to form a RAC cluster. Dynamic V$/GV$ diagnostics shown for entitled RAC systems avoid AWR/ASH so the lesson does not require Diagnostics Pack.

1. RAC is many instances opening one database

A database is the persistent set of control files, datafiles and online redo-log structures. An instance is memory plus processes that operate on those files. In RAC, all participating instances open the same database, so they see the same committed application data and dictionary while keeping separate buffer caches/shared pools and instance-specific process state.

Structure RAC scope Why it matters
Datafiles/control files Shared database storage Every instance opens the same persistent database.
SGA/buffer cache/shared pool Per instance The same database block can be cached in several instances under global coherency rules.
Redo thread Per instance/thread Each active instance records its own redo stream into shared-storage redo groups for that thread.
Undo Instance/thread-associated transaction undo context Recovery/transaction ownership must survive instance failure.
Cluster resource metadata Clusterwide via Oracle Clusterware/OCR Controls database/instance/service/network placement.
Interconnect Private cluster network Carries Cache Fusion, lock/resource and membership messaging.

2. Cache Fusion keeps separate buffer caches coherent

Cache Fusion is Oracle RAC's disk-less cache-coherency mechanism. If instance 2 needs a block whose useful version is in instance 1's buffer cache, Oracle can transfer the block image directly over the private interconnect rather than force instance 1 to write it to disk and instance 2 to read it back.

The Global Cache Service (GCS) coordinates cached database blocks. The Global Enqueue Service (GES) coordinates enqueues and other globally managed resources. Together they maintain the distributed Global Resource Directory (GRD), which tracks global ownership/state across active instances.

Capacity consequence

The GRD and Cache Fusion infrastructure consume additional SGA and CPU/interconnect capacity. Oracle documentation notes roughly 10% SGA overhead as a planning reference, not a universal sizing formula; size from the actual workload and current release behavior.

3. Current blocks and consistent-read blocks have different intents

A session modifying a row needs an appropriate current block version. A reader can need a consistent read (CR) block reconstructed for its query SCN. GCS can ship current or CR copies between instances while preserving global block state. The transfer is fast when the interconnect and remote instance are healthy, but it is still coordination that does not exist in the same way in a single instance.

sql · entitled RAC: prove how many instances open this database
SELECT  inst_id,  instance_number,  instance_name,  host_name,  status,  thread#,  archiverFROM gv$instanceORDER BY inst_id;
sql · entitled RAC: redo thread and instance parameter identity
SELECT inst_id,thread#,status,enabledFROM gv$threadORDER BY inst_id,thread#;SELECT inst_id,name,valueFROM gv$parameterWHERE name IN (  'cluster_database',  'instance_number',  'thread',  'undo_tablespace')ORDER BY inst_id,name;

On a healthy two-instance RAC database you expect two GV$INSTANCE rows and cluster-aware parameters/redo threads that distinguish instances. GV$ views aggregate instance-local V$ data through the cluster.

4. GCS/GES background processes expose the mechanism

sql · entitled RAC process evidence
SELECT  inst_id,  pname,  pid,  programFROM gv$processWHERE pname LIKE 'LM%'   OR pname IN ('LMS0','LMON','LMD0')ORDER BY inst_id,pname;

Process counts/names vary with workload/release. LMS processes serve global-cache messages and block transfers; LMON/LMD coordinate membership/resource management. Do not use a fixed expected process count as a health test.

5. RAC does not split one ordinary serial SQL statement across instances automatically

A client session connects to one instance for a request. The SQL optimizer may use intra-instance or RAC-aware parallel execution when configured/licensed/appropriate, but ordinary RAC does not mean “instance 1 runs half the SELECT and instance 2 runs the other half.” Adding an instance can improve concurrency or availability while a single poorly selective serial statement remains just as expensive—or becomes worse if it causes global block traffic.

Wrong success metric

Do not buy RAC to chase a single-query benchmark before diagnosing SQL plans, I/O, CPU, contention and parallel execution requirements. RAC primarily changes failure tolerance and multi-instance workload placement; performance gains depend on workload shape.

6. Free baseline lab: prove the single-instance boundary

sql · safe on Oracle AI Database Free
SELECT  database_role,  open_mode,  platform_nameFROM v$database;SELECT  inst_id,  instance_number,  instance_name,  host_name,  statusFROM gv$instance;SELECT  name,valueFROM v$parameterWHERE name IN ('cluster_database','instance_number')ORDER BY name;

On Free you expect one GV$INSTANCE row and CLUSTER_DATABASE=FALSE. That is useful baseline evidence, but it cannot reproduce Cache Fusion or GES/GCS contention.

7. Deliberately wrong: start a second Free database in the same logical environment

Oracle AI Database Free is explicitly single-installation/single-instance per logical environment. Trying to turn two Free instances on the same host/container/VM into “free RAC” violates the product boundary; current Free can raise ORA-00442: Oracle AI Database Free single instance violation error when another Free installation is started in the same logical environment.

Correct learning path

Use Free to learn SQL, instance/storage/redo/service mechanics and build RAC sizing/runbooks. Use an entitled/certified RAC lab—such as properly licensed EE/EE-ES or an included RAC cloud offering—for actual Cache Fusion/Clusterware exercises.

8. Architecture worksheet from the current ServiceHub workload

sql · capture workload facts before proposing RAC
SELECT  SYSTIMESTAMP AS captured_at,  MAX(CASE WHEN name='user commits' THEN value END) AS commits,  MAX(CASE WHEN name='redo size' THEN value END) AS redo_bytes,  MAX(CASE WHEN name='session logical reads' THEN value END) AS logical_readsFROM v$sysstatWHERE name IN (  'user commits',  'redo size',  'session logical reads');SELECT COUNT(*) AS user_sessionsFROM v$sessionWHERE type='USER';

Take two snapshots around a representative interval and derive commits/sec, redo bytes/sec and logical reads/sec. Add CPU, storage latency, connection count, hot-object evidence and availability requirements. RAC node count is an architecture result—not the starting assumption.

9. Production judgment

RAC is appropriate when multiple instances over one shared database materially improve node/instance availability and concurrent workload scale without unacceptable Cache Fusion coordination. It does not create a remote disaster copy, remove storage/network failure domains, or repair inefficient SQL automatically.

Current 26ai RAC is an extra-cost option on EE/EE-ES and included in BaseDB EE-EP/ExaDB; it is unavailable in Free. Grid Infrastructure must be installed first, and the Grid Infrastructure release must be the same as or newer than the highest RAC database release in the cluster. Lesson 2 adds the infrastructure/client layer that makes multiple instances usable: Clusterware resources, SCAN, VIPs and services.

Check your understanding

  1. What is shared among RAC instances: the SGA or the database files?
  2. What does Cache Fusion avoid in many cross-instance block requests?
  3. What are the primary responsibilities of GCS and GES?
  4. Does adding a RAC node automatically make one serial query faster?
  5. Can Oracle AI Database Free be used as a real RAC cluster lab?
Review the answers

The database files are shared; each RAC instance has its own SGA and processes.

It can transfer a useful block image directly between instance buffer caches instead of forcing a disk write/read round trip.

GCS coordinates globally cached database blocks; GES coordinates global enqueues/resources, together maintaining GRD state.

No. RAC can improve availability/concurrency, but SQL shape and global coordination determine individual query behavior.

No. RAC is unavailable in Free and Free is restricted to one installation per logical environment.

Authoritative references

Keep knowledge open

Help the academy stay free and grow.

If these tutorials save you time, a small donation supports new lessons, technical review, diagrams, examples, and long-term maintenance.

ETHEthereum / ERC-20 only
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0

Send only Ethereum or ERC-20 compatible assets to this address.