Explain use of Server pool & policy concept in RAC Environment
Resources managed by Oracle Clusterware are contained in logical groups of servers called server pools.
A database administrator uses SRVCTL to create a server pool for servers hosting a database or database service.
A clusterware administrator uses CRSCTL to create server pools for non-database use, such as creating a server pool for servers hosting an application.
Server pools divide the cluster into logical groups of servers hosting both singleton and uniform applications.
UNIFORM means application load is distributed on all nodes present in Server pool.
SINGLETON means application is running on single node running in Server Pool.
Free Server Pool
Free server pool contains servers that are not assigned to any other server pools. When we install Oracle Clusterware then all server by default assigned to Free Server Pool.
Generic Server Pool
Generic server pool stores any server that is not in a top-level server pool and is not policy managed. Servers that host non-policy-managed applications.
Note: SRVCTL or CRSCTL to create server pools for databases and other application.
Oracle Clusterware continues to assign servers to server pools
1. Until all server pools are filled in order of importance to their minimum (MIN_SIZE).
2. Until all server pools are filled in order of importance to their maximum (MAX_SIZE).
3. By default, any servers not placed in a server pool go into the Free server pool.
Note: If free server pool importance value is greater than servers move to free server pool if minimum value reached on low importance server pool.
MIN_SIZE: The minimum number of servers the server pool should contain.
MAX_SIZE: The maximum number of servers the server pool should contain.
IMPORTANCE: A number from 0 to 1000 (0 being least important).
Check Server pool information
crsctl status serverpool pool1 -p
Modify the server pool attribute
Created two server pool policy having different uses in day time and night time.
In day time app1 need two server and app2 need 1 server and at night app1 need 1 server and app2 need 2 server. So we created two policy DAYTIME or NIGHTTIME.
crsctl modify serverpool pool1 -attr "MIN_SIZE=2,MAX_SIZE=2" -policy DayTime
crsctl modify serverpool pool2 -attr "MIN_SIZE=1,MAX_SIZE=1" -policy DayTime
crsctl modify serverpool pool1 -attr "MIN_SIZE=1,MAX_SIZE=1" -policy NightTime
crsctl modify serverpool pool2 -attr "MIN_SIZE=2,MAX_SIZE=2" -policy NightTime
Activate the policy
-- Activate the policy daytime
crsctl modify policyset -attr "LAST_ACTIVATED_POLICY=DayTime"
-- Switch to activate the policy nightime
crsctl modify policyset -attr "LAST_ACTIVATED_POLICY=NightTime"
Check status of Server pool
crsctl stat serverpool
Add serverpool in database
srvctl add database -serverpool "serverpool1,serverpool3"
Create backup of policy before changes
crsctl status policyset -file file_name
Check the resource task
crsctl status resource -t
Add or modify a database instance you can configure load-aware resource
srvctl modify database -db db_unique_name -cpucount cpu_count -memorytarget memory_target
Note: cpu_count refers to the number of workload CPUs and memory_target refers to the target memory,