CLUSTER_DATABASE - Enable Oracle RAC Mode
CLUSTER_DATABASE
Section titled “CLUSTER_DATABASE”Overview
Section titled “Overview”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)
Configuration
Section titled “Configuration”Viewing Current Value
Section titled “Viewing Current Value”-- Check current CLUSTER_DATABASE settingSELECT name, value, isdefault, ismodified, descriptionFROM v$parameterWHERE name = 'cluster_database';
-- Check SPFILE value (persistent setting for next startup)SELECT name, value, isspecifiedFROM v$spparameterWHERE name = 'cluster_database';
-- View all cluster-related parameters togetherSELECT name, value, isdefaultFROM v$parameterWHERE name IN ( 'cluster_database', 'cluster_database_instances', 'instance_number', 'thread', 'undo_tablespace')ORDER BY name;
-- Confirm whether instance is actually running in cluster modeSELECT instance_number, instance_name, host_name, parallel, status, cluster_databaseFROM gv$instanceORDER BY instance_number;Setting the Parameter
Section titled “Setting the Parameter”-- 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 restartSELECT name, valueFROM v$parameterWHERE name = 'cluster_database';Tuning Guidance
Section titled “Tuning Guidance”Recommended Values
Section titled “Recommended Values”| Scenario | Recommended Value |
|---|---|
| Standard Oracle RAC (multiple active instances) | TRUE |
| Oracle RAC One Node | TRUE |
| Oracle Grid Infrastructure installed, single instance | FALSE |
| Standard Edition without RAC license | FALSE |
| Single-instance database (non-cluster) | FALSE |
| Emergency single-instance fallback from RAC | FALSE (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.
How to Size
Section titled “How to Size”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 correctlySELECT name, valueFROM v$parameterWHERE name IN ( 'cluster_database', 'cluster_database_instances', 'instance_number')ORDER BY name;
-- Confirm all expected instances are up in the clusterSELECT inst_id, instance_number, instance_name, host_name, status, database_statusFROM gv$instanceORDER BY inst_id;
-- Verify redo thread assignments for each instanceSELECT thread#, status, enabled, groupsFROM v$threadORDER BY thread#;Monitoring
Section titled “Monitoring”-- Monitor inter-instance traffic (Cache Fusion) — only available in RACSELECT inst_id, gc_cr_blocks_received, gc_current_blocks_received, gc_cr_blocks_served, gc_current_blocks_servedFROM gv$instance_cache_transferORDER BY inst_id;
-- Check for global cache wait eventsSELECT event, total_waits, time_waited, ROUND(time_waited / NULLIF(total_waits, 0), 2) AS avg_wait_centisecsFROM v$system_eventWHERE event LIKE 'gc %'ORDER BY time_waited DESCFETCH FIRST 15 ROWS ONLY;
-- Review cluster wait events from all instancesSELECT inst_id, event, total_waits, time_waitedFROM gv$system_eventWHERE event LIKE 'gc %'ORDER BY inst_id, time_waited DESC;Common Issues
Section titled “Common Issues”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 SPFILEALTER 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 instancesSELECT inst_id, valueFROM gv$parameterWHERE name = 'spfile'ORDER BY inst_id;
-- Check cluster_database setting on all running instancesSELECT inst_id, name, valueFROM gv$parameterWHERE 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 fallbackSELECT tablespace_name, status, contentsFROM dba_tablespacesWHERE contents = 'UNDO'ORDER BY tablespace_name;
-- Switch undo tablespace if neededALTER SYSTEM SET undo_tablespace = 'UNDOTBS1';Related Parameters
Section titled “Related Parameters”- INSTANCE_NUMBER — Unique instance number within the RAC cluster; required when CLUSTER_DATABASE=TRUE
- CLUSTER_DATABASE_INSTANCES — Expected number of instances; affects GCS/GES sizing
- PARALLEL_MAX_SERVERS — Controls parallel query resources; important in RAC environments
- UNDO_TABLESPACE — Each RAC instance requires its own dedicated undo tablespace
Related Errors
Section titled “Related Errors”- ORA-01034: Oracle Not Available — Startup failures caused by Clusterware misconfiguration when CLUSTER_DATABASE=TRUE
- ORA-12154: TNS Could Not Resolve — SCAN listener configuration issues that prevent RAC instance connectivity
- ORA-00600: Internal Error — Cache Fusion and global enqueue issues in misconfigured RAC environments can surface as internal errors
Version Notes
Section titled “Version Notes”| Version | Notes |
|---|---|
| Oracle 9i | RAC and CLUSTER_DATABASE introduced; replaced OPS (Oracle Parallel Server) |
| Oracle 10g | RAC significantly enhanced; ASM and CRS introduced alongside CLUSTER_DATABASE |
| Oracle 11g R2 | Oracle 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 / 23ai | Behavior unchanged; Oracle RAC on Exadata and cloud (ExaCS) use CLUSTER_DATABASE=TRUE |