Sunday, December 27, 2009

CPU_COUNT initialization parameter

Following 2 behaviors are observed when altering CPU_COUNT initialization parameter.

Envrionment:


SQL> select * from v$version;

BANNER
---------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

Observation 1: CPU_COUNT is capped to 3x initial CPU_COUNT value


SQL> show parameter cpu

NAME TYPE VALUE
------------------------------------ ----------- -----------------
cpu_count integer 2

SQL> alter system set cpu_count=100;

System altered.

SQL> show parameter cpu_count

NAME TYPE VALUE
------------------------------------ ----------- -----------------------
cpu_count integer 6


2009-12-27 20:12:46.709000 +08:00
Requested CPU count 100 higher than the allowed maximum (6), capped
(3 times CPU count at instance startup)
RM cpu_count => Low Server Threshold (2) : High Server Threshold (5)
ALTER SYSTEM SET cpu_count=100 SCOPE=BOTH;


Observation 2: Setting CPU_COUNT=0 will let Oracle to decide the correct value


SQL> alter system set cpu_count=0;

System altered.

SQL> show parameter cpu

NAME TYPE VALUE
------------------------------------ ----------- ---------------------
cpu_count integer 2
parallel_threads_per_cpu integer 2
resource_manager_cpu_allocation integer 2


2009-12-27 20:20:41.798000 +08:00
Setting CPU count to 2
ALTER SYSTEM SET cpu_count=0 SCOPE=BOTH;