Static Instance-Nonmodifiable Parameters (static, same value on all instances) Those who put a RAC database into production and intend to never completely shutdown the database should read. There are some database parameters that have the comment in Reference "Multiple instances must have the same value". These parameters, if static, cannot be changed on one instance at a time. It means you can't make changes in a rolling fashion that keeps the database always available to the clients. As far as I know, no data dictionary view provides a list of these, for lack of a better term, instance-nonmodifiable parameters. In v$parameter* views, isinstance_modifiable is only for dynamic parameters, i.e. those changeable by alter system with scope=system. Column ksppiflg of x$ksppi has 30 bits (as of 12gR1) or 32 bits (as of 12gR2) but none is for this property. (Ref: Enhancement request Bug 21129197, SR 3-10777317651) There are 17 parameters in 11gR2 with the comment "Multiple instances must have the same value",[note1] gleaned from the HTML pages, plus one, CLUSTER_DATABASE, with a slightly different comment,[note2] ACTIVE_INSTANCE_COUNT CLUSTER_DATABASE CLUSTER_DATABASE_INSTANCES COMPATIBLE CONTROL_FILES DB_BLOCK_SIZE DB_DOMAIN DB_FILES DB_NAME DB_RECOVERY_FILE_DEST DB_RECOVERY_FILE_DEST_SIZE DB_UNIQUE_NAME DB_UNRECOVERABLE_SCN_TRACKING INSTANCE_TYPE PARALLEL_EXECUTION_MESSAGE_SIZE REMOTE_LOGIN_PASSWORDFILE SPFILE UNDO_MANAGEMENT But of course some can be dynamically changed even if one single value has to be used across all instances; there are 4, i.e. DB_RECOVERY_FILE_DEST, DB_RECOVERY_FILE_DEST_SIZE, DB_UNRECOVERABLE_SCN_TRACKING, SPFILE. Excluding those 4, the remaining are: ACTIVE_INSTANCE_COUNT CLUSTER_DATABASE CLUSTER_DATABASE_INSTANCES COMPATIBLE CONTROL_FILES DB_BLOCK_SIZE DB_DOMAIN DB_FILES DB_NAME DB_UNIQUE_NAME INSTANCE_TYPE PARALLEL_EXECUTION_MESSAGE_SIZE REMOTE_LOGIN_PASSWORDFILE UNDO_MANAGEMENT The only critical one, in my opinion, is DB_FILES. The fact that its default value, 200, is almost always inadequate on modern databases, makes it particularly dangerous. Therefore, you must make absolutely sure that the value has been increased to one that meets the requirement in the foreseeable future. (The downside of too big DB_FILES may be slightly, negligibly, increased PGA for each server process.) Among other parameters, PARALLEL_EXECUTION_MESSAGE_SIZE can be increased to up to 32k from its default 16k (2k or 4k before 11g; so it may already be good enough). Control files should be multiplexed from the beginning; fortunately, if you use DBCA to create a database, it's automatically done. COMPATIBLE rarely needs to be changed; if it does, there must be a serious issue to work around anyway. Regarding DB_(UNIQUE_)NAME, never be undecisive about giving a name to the database at the time you create it. If you do need to set DB_DOMAIN, plan well and don't change it lightly later. Interestingly, not all such "stubborn" parameters are really static and multiple instances must have the same value. For instance, PARALLEL_EXECUTION_MESSAGE_SIZE *can* be set to different values on different instances in spite of the documentation warning. But parallel execution SQLs may throw errors ORA-12850, ORA-12801, or ORA-600 (for the last one, see the bottom note of ./ORA-600%5Bkgeade_is_0%5D.txt). Here's a test on changing DB_FILES by setting it in spfile and bounce only one instance, keeping the other up and running. It's done on Oracle 12.1.0.1, but it's the same as on earlier versions. SQL> sho parameter db_files NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_files integer 200 <-- default SQL> select value from v$spparameter where name = 'db_files'; VALUE ------------------------------------------------------------------------------- SQL> alter system set db_files = 800 scope = spfile; System altered. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 2638954496 bytes Fixed Size 2291856 bytes Variable Size 1509951344 bytes Database Buffers 1107296256 bytes Redo Buffers 19415040 bytes ORA-01105: mount is incompatible with mounts by other instances ORA-01174: DB_FILES is 800 buts needs to be 200 to be compatible [2019-07 Update] Parameter LOG_ARCHIVE_CONFIG is also instance non-modifiable. If its value is different between two RAC instances, you'll get ORA-16188: LOG_ARCHIVE_CONFIG settings inconsistent with previously started instance when you try to startup the second instance. This parameter is also special in that you cannot explicitly set it to a null string on RAC. You either set it to NODG_CONFIG or remove it from (s)pfile altogether. _______________ [note] 1. The comment for PERMIT_92_WRAP_FORMAT, ARCHIVE_LAG_TARGET and AWR_SNAPSHOT_TIME_OFFSET is "Multiple instances should use the same value". Oracle 12c has more of these parameters: COMMON_USER_PREFIX DB_INDEX_COMPRESSION_INHERITANCE DEFAULT_SHARING (12cR2; comment is "All instances must have the same value") ENCRYPT_NEW_TABLESPACES (12cR2; comment is "The same value should be specified on all instances") MAX_STRING_SIZE (comment is "Multiple instances must use the same value") OFS_THREADS (12cR2; comment is "The same value should be specified on all instances") PDB_FILE_NAME_CONVERT SPATIAL_VECTOR_ACCELERATION (comment is "Multiple instances should use the same value") 2. CLUSTER_DATABASE has this comment in documentation "Oracle RAC For all instances, the value must be set to true." My test of changing it to false on one RAC instance shows that it's not possible to bring up this instance while the other instance is still up. So this parameter should be considered the same as CLUSTER_DATABASE_INSTANCES in this regard.