Skip to content

CLUSTER_DATABASE - Enable Oracle RAC Mode

CLUSTER_DATABASE is the fundamental parameter that enables Oracle Real Application Clusters (RAC) mode. When set to TRUE, Oracle starts the instance as a cluster participant — enabling Cache Fusion (the cross-instance buffer cache coherency mechanism), global enqueue services, and all the inter-instance communication that makes RAC work. When FALSE (the default), the instance operates as a single-instance database with no cluster awareness.

This parameter must be set to TRUE on every instance in a RAC cluster and must be consistent with the database’s creation mode — a database created as a RAC database cannot be opened in single-instance mode without additional steps. In Oracle RAC One Node configurations, CLUSTER_DATABASE=TRUE is also required even though only one instance is active at a time. This parameter is evaluated at startup and cannot be changed while the instance is running.

Parameter Type: Static (requires instance restart to change) Default Value: FALSE Valid Values: TRUE, FALSE Available Since: Oracle 9i RAC Modifiable: No — SCOPE=SPFILE only; takes effect on next startup PDB Modifiable: No (CDB-level setting)

-- Check current CLUSTER_DATABASE setting
SELECT name, value, isdefault, ismodified, description
FROM v$parameter
WHERE name = 'cluster_database';
-- Check SPFILE value (persistent setting for next startup)
SELECT name, value, isspecified
FROM v$spparameter
WHERE name = 'cluster_database';
-- View all cluster-related parameters together
SELECT name, value, isdefault
FROM v$parameter
WHERE name IN (
'cluster_database',
'cluster_database_instances',
'instance_number',
'thread',
'undo_tablespace'
)
ORDER BY name;
-- Confirm whether instance is actually running in cluster mode
SELECT instance_number, instance_name, host_name,
parallel, status, cluster_database
FROM gv$instance
ORDER BY instance_number;
-- Enable RAC mode (set on all instances in SPFILE)
ALTER SYSTEM SET cluster_database = TRUE SCOPE=SPFILE;
-- Disable RAC mode (for single-instance fallback or maintenance)
ALTER SYSTEM SET cluster_database = FALSE SCOPE=SPFILE;
-- After changing, restart all instances for a clean cluster state
-- On each node: SHUTDOWN IMMEDIATE; STARTUP;
-- For single-instance fallback with a RAC database:
-- 1. Shut down all instances except one
-- 2. Set CLUSTER_DATABASE=FALSE in SPFILE
-- 3. Start that instance (it will open the database exclusively)
-- 4. Re-enable CLUSTER_DATABASE=TRUE and restart all instances to return to RAC
-- Verify the setting after restart
SELECT name, value
FROM v$parameter
WHERE name = 'cluster_database';
ScenarioRecommended Value
Standard Oracle RAC (multiple active instances)TRUE
Oracle RAC One NodeTRUE
Oracle Grid Infrastructure installed, single instanceFALSE
Standard Edition without RAC licenseFALSE
Single-instance database (non-cluster)FALSE
Emergency single-instance fallback from RACFALSE (temporary)

CLUSTER_DATABASE is not a performance tuning parameter — it is a configuration flag. Set it to TRUE only when the database is configured as a RAC database and Oracle Clusterware is running. Setting it incorrectly will prevent the instance from starting.

There is no sizing for this boolean parameter. The associated cluster sizing decisions involve CLUSTER_DATABASE_INSTANCES (the expected number of active instances) and INSTANCE_NUMBER.

-- Verify the expected number of instances is set correctly
SELECT name, value
FROM v$parameter
WHERE name IN (
'cluster_database',
'cluster_database_instances',
'instance_number'
)
ORDER BY name;
-- Confirm all expected instances are up in the cluster
SELECT inst_id, instance_number, instance_name,
host_name, status, database_status
FROM gv$instance
ORDER BY inst_id;
-- Verify redo thread assignments for each instance
SELECT thread#, status, enabled, groups
FROM v$thread
ORDER BY thread#;
-- Monitor inter-instance traffic (Cache Fusion) — only available in RAC
SELECT inst_id,
gc_cr_blocks_received,
gc_current_blocks_received,
gc_cr_blocks_served,
gc_current_blocks_served
FROM gv$instance_cache_transfer
ORDER BY inst_id;
-- Check for global cache wait events
SELECT event, total_waits, time_waited,
ROUND(time_waited / NULLIF(total_waits, 0), 2) AS avg_wait_centisecs
FROM v$system_event
WHERE event LIKE 'gc %'
ORDER BY time_waited DESC
FETCH FIRST 15 ROWS ONLY;
-- Review cluster wait events from all instances
SELECT inst_id, event, total_waits, time_waited
FROM gv$system_event
WHERE event LIKE 'gc %'
ORDER BY inst_id, time_waited DESC;

Issue 1: Instance Fails to Start — CLUSTER_DATABASE=TRUE Without Clusterware

Section titled “Issue 1: Instance Fails to Start — CLUSTER_DATABASE=TRUE Without Clusterware”

If CLUSTER_DATABASE=TRUE is set but Oracle Clusterware (CRS) is not running or the node is not part of a cluster, the instance will fail to start because it cannot register with the cluster registry or contact other instances.

Resolution: Either start Oracle Clusterware first, or set CLUSTER_DATABASE=FALSE in the SPFILE for single-instance startup. Use a pfile override for emergency access.

-- Emergency startup using pfile with CLUSTER_DATABASE=FALSE
-- From OS: sqlplus / as sysdba
-- STARTUP PFILE='/tmp/emergency.ora'
-- Where emergency.ora contains: cluster_database=FALSE
-- After gaining access, correct the SPFILE
ALTER SYSTEM SET cluster_database = FALSE SCOPE=SPFILE;
-- Or, if returning to RAC after Clusterware is restored:
ALTER SYSTEM SET cluster_database = TRUE SCOPE=SPFILE;

Issue 2: Inconsistent CLUSTER_DATABASE Settings Across Instances

Section titled “Issue 2: Inconsistent CLUSTER_DATABASE Settings Across Instances”

In a RAC environment, all instances must have CLUSTER_DATABASE=TRUE in their SPFILE or instance-specific pfile. If one instance has FALSE while others have TRUE, that instance will attempt to open the database exclusively and will fail because other instances already have it open.

Resolution: Use a shared SPFILE stored in ASM or on a cluster file system so all instances read the same parameter values. Verify consistency across all instance SPFILEs.

-- Check SPFILE location for all instances
SELECT inst_id, value
FROM gv$parameter
WHERE name = 'spfile'
ORDER BY inst_id;
-- Check cluster_database setting on all running instances
SELECT inst_id, name, value
FROM gv$parameter
WHERE name = 'cluster_database'
ORDER BY inst_id;

Issue 3: Setting CLUSTER_DATABASE=FALSE Prevents Undo Tablespace Switching

Section titled “Issue 3: Setting CLUSTER_DATABASE=FALSE Prevents Undo Tablespace Switching”

When running in single-instance fallback mode with CLUSTER_DATABASE=FALSE, Oracle will use the undo tablespace assigned to the single running instance. Other instances’ undo tablespaces remain available but are not automatically freed. This can cause space management confusion.

Resolution: After a single-instance fallback, manually switch to the appropriate undo tablespace if needed, and return to full RAC mode as soon as the issue is resolved.

-- Check undo tablespace assignments in single-instance fallback
SELECT tablespace_name, status, contents
FROM dba_tablespaces
WHERE contents = 'UNDO'
ORDER BY tablespace_name;
-- Switch undo tablespace if needed
ALTER SYSTEM SET undo_tablespace = 'UNDOTBS1';
VersionNotes
Oracle 9iRAC and CLUSTER_DATABASE introduced; replaced OPS (Oracle Parallel Server)
Oracle 10gRAC significantly enhanced; ASM and CRS introduced alongside CLUSTER_DATABASE
Oracle 11g R2Oracle Grid Infrastructure introduced; CLUSTER_DATABASE management integrated with Grid
Oracle 12c+CDB/PDB architecture compatible with RAC; CLUSTER_DATABASE applies at CDB level
Oracle 19c+No functional changes; RAC and CLUSTER_DATABASE remain the standard multi-instance configuration
Oracle 21c / 23aiBehavior unchanged; Oracle RAC on Exadata and cloud (ExaCS) use CLUSTER_DATABASE=TRUE