本帖最后由 sunyunyi 于 2017-8-16 15:03 编辑
目前服务于电力行业,致力于帮助客户解决生产过程中出现的问题,提高生产效率, 爱好书法,周易!愿结交志同道合之士!共同进步! 微信号:sunyunyi_sun
该文档测试oracle serverpool 功能,使用的版本为[11.2.0.4.0],该版本无策略集功能和配置CPU和mem功能,该功能在12C中实现。
首先概述serverpool,我的理解很简单,就是将server分配到各个serverpool中再将resource分配到serverpool实现主机资源的合理
动态分配。好处:提高系统的扩展性,可以整合系统,节约服务器资源。
测试环境:
[grid]$ crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.2.0.4.0]
安装说明:
两个节点的数据库,首先以administrator managed 方式建立数据库,然后手动添加serverpool upgrade_pool,
修改数据库为policy managed 分配到upgrade_pool。再新建数据库test以policy managed方式添加到已有的serverpool中。
配置1:
server:server1,server2
serverpool:upgrade_pool
database: pmssn,test
two database in upgrade_pool
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server2
ora.cvu
1 ONLINE ONLINE server2
ora.oc4j
1 ONLINE ONLINE server2
ora.pmssn.db
1 ONLINE ONLINE server1 Open
2 ONLINE ONLINE server2 Open
ora.server1.vip
1 ONLINE ONLINE server1
ora.server2.vip
1 ONLINE ONLINE server2
ora.scan1.vip
1 ONLINE ONLINE server2
ora.test.db
1 ONLINE ONLINE server1 Open
2 ONLINE ONLINE server2 Open
[grid]$ crsctl status serverpool ora.upgrade_pool -f
NAME=ora.upgrade_pool
IMPORTANCE=2
MIN_SIZE=1
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=server1 server2
[grid]$ srvctl config database -d pmssn
Database unique name: pmssn
Database name: pmssn
Oracle home: /u01/app/oracle/product/11.2.0.4/db_1
Oracle user: grid
Spfile: +DATA/pmssn/spfilepmssn.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: upgrade_pool
Database instances:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Database is policy managed
[grid]$ srvctl config database -d test
Database unique name: test
Database name: test
Oracle home: /u01/app/oracle/product/11.2.0.4/db_1
Oracle user: grid
Spfile: +DATA/test/spfiletest.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: upgrade_pool
Database instances:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Database is policy managed
总结:手动创建serverpool:ora.upgrade_pool min=1 max=2 IMPORTANCE=2,级别最高(系统默认的IMPORTANCE=0)所以两个server都
分配给ora.upgrade_pool
两个database:pmssn 和 test 都属于ora.upgrade_pool,故两个server都可以启动。
配置2:
server:server1,server2
serverpool:upgrade_pool(min=1 max=2 IMPORTANCE=2)
testpool(min=1 max=2 IMPORTANCE=2)
database: pmssn,test
pmssn in upgrade_pool
test in upgrade_pool
[grid]$ srvctl add serverpool -g testpool -l 1 -u 2 -i 1 -n "server1,server2"
PRCS-1009 : Failed to create server pool testpool
PRCR-1071 : Failed to register or update server pool ora.testpool
CRS-2736: The operation requires stopping resource 'ora.pmssn.db' on server 'server1'
CRS-2736: The operation requires stopping resource 'ora.test.db' on server 'server1'
CRS-2737: Unable to register server pool 'ora.testpool' as this will affect running resources, but the force option was not specified
提示添加 -f 选项:
[grid]$ srvctl add serverpool -g testpool -l 1 -u 2 -i 2 -n "server1,server2" -f
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server2
ora.cvu
1 ONLINE ONLINE server2
ora.oc4j
1 ONLINE ONLINE server2
ora.pmssn.db
1 ONLINE OFFLINE Instance Shutdown
2 ONLINE ONLINE server2 Open
ora.server1.vip
1 ONLINE ONLINE server1
ora.server2.vip
1 ONLINE ONLINE server2
ora.scan1.vip
1 ONLINE ONLINE server2
ora.test.db
1 ONLINE OFFLINE Instance Shutdown
2 ONLINE ONLINE server2 Open
[grid]$ crsctl status serverpool ora.testpool -f
NAME=ora.testpool
IMPORTANCE=2
MIN_SIZE=1
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=server1
[grid]$ crsctl status serverpool ora.upgrade_pool -f
NAME=ora.upgrade_pool
IMPORTANCE=2
MIN_SIZE=1
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=server2
总结:
从上面信息可以看到,两个serverpool的IMPORTANCE相同,min都为1,那么每个serverpool都必须分配一个server,
我们的两个库都属于ora.upgrade_pool,而serverpool
ra.upgrade_pool的ACTIVE_SERVERS=server2,
也就是看到的结果两个数据库都只能在server:server2上启动。
配置2:
server:server1,server2
serverpool:upgrade_pool(min=1 max=2 IMPORTANCE=2)
testpool(min=1 max=2 IMPORTANCE=2)
database: pmssn,test
pmssn in upgrade_pool
test in testpool
[grid]$ srvctl stop database -d test
[grid]$ srvctl stop database -d pmssn
[grid]$ srvctl modify database -d test -g "ora.testpool"
[grid]$ srvctl start database -d pmssn
[grid]$ srvctl start database -d test
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server2
ora.cvu
1 ONLINE ONLINE server2
ora.oc4j
1 ONLINE ONLINE server2
ora.pmssn.db
1 ONLINE OFFLINE Instance Shutdown
2 ONLINE ONLINE server2 Open
ora.server1.vip
1 ONLINE ONLINE server1
ora.server2.vip
1 ONLINE ONLINE server2
ora.scan1.vip
1 ONLINE ONLINE server2
ora.test.db
1 ONLINE ONLINE server1 Open
2 ONLINE OFFLINE Instance Shutdown
总结:依据上面结论,不在累述。
配置3:
server:server1,server2
serverpool:upgrade_pool(min=1 max=2 IMPORTANCE=2)
testpool(min=2 max=2 IMPORTANCE=2)
database: pmssn,test
pmssn in upgrade_pool
test in serpool
[grid]$ srvctl modify serverpool -g testpool -l 2 -u 2 -i 2 -n "server1,server2" -f
[grid]$ srvctl stop database -d test
[grid]$ srvctl start database -d test
[grid]$ crsctl status serverpool -f
NAME=ora.testpool
IMPORTANCE=2
MIN_SIZE=2
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=server1
srvctl modify serverpool -g upgrade_pool -l 2 -u 2 -i 2 -n "server1,server2" -f
NAME=ora.testpool
IMPORTANCE=2
MIN_SIZE=2
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=server1
NAME=ora.upgrade_pool
IMPORTANCE=2
MIN_SIZE=2
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=server2
总结:因为只有两个server,所以在IMPORTANCE相同时只能各自分配一个。
配置3:
server:server1,server2
serverpool:upgrade_pool(min=2 max=2 IMPORTANCE=3)
testpool(min=2 max=2 IMPORTANCE=2)
database: pmssn,test
pmssn in upgrade_pool
test in testpool
srvctl modify serverpool -g upgrade_pool -l 2 -u 2 -i 3 -n "server1,server2" -f
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server2
ora.cvu
1 ONLINE ONLINE server2
ora.oc4j
1 ONLINE ONLINE server2
ora.pmssn.db
1 ONLINE OFFLINE Instance Shutdown
2 ONLINE ONLINE server2 Open
ora.server1.vip
1 ONLINE ONLINE server1
ora.server2.vip
1 ONLINE ONLINE server2
ora.scan1.vip
1 ONLINE ONLINE server2
ora.test.db
1 ONLINE ONLINE server1 Open,STOPPING
2 ONLINE OFFLINE Instance Shutdown
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server2
ora.cvu
1 ONLINE ONLINE server2
ora.oc4j
1 ONLINE ONLINE server2
ora.pmssn.db
1 ONLINE OFFLINE Instance Shutdown,S
TARTING
2 ONLINE ONLINE server2 Open
ora.server1.vip
1 ONLINE ONLINE server1
ora.server2.vip
1 ONLINE ONLINE server2
ora.scan1.vip
1 ONLINE ONLINE server2
ora.test.db
1 ONLINE OFFLINE Instance Shutdown
2 ONLINE OFFLINE Instance Shutdown
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server2
ora.cvu
1 ONLINE ONLINE server2
ora.oc4j
1 ONLINE ONLINE server2
ora.pmssn.db
1 ONLINE ONLINE server1 Open
2 ONLINE ONLINE server2 Open
ora.server1.vip
1 ONLINE ONLINE server1
ora.server2.vip
1 ONLINE ONLINE server2
ora.scan1.vip
1 ONLINE ONLINE server2
ora.test.db
1 ONLINE OFFLINE Instance Shutdown
2 ONLINE OFFLINE Instance Shutdown
NAME=ora.testpool
IMPORTANCE=2
MIN_SIZE=2
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=
NAME=ora.upgrade_pool
IMPORTANCE=3
MIN_SIZE=2
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=server1 server2
[grid]$ srvctl start database -d test;
PRCR-1079 : Failed to start resource ora.test.db
CRS-2643: The server pool(s) where resource 'ora.test.db' could run have no servers
结果:
serverpool:upgrade_pool(min=2 max=2 IMPORTANCE=3)
testpool(min=2 max=2 IMPORTANCE=2)
upgrade_pool的IMPORTANCE=3级别最高,min=2必须首先满足,所以ACTIVE_SERVERS=server1 server2
testpool的ACTIVE_SERVERS=,没server分配。
配置4:
server:server1,server2
serverpool:upgrade_pool(min=1 max=2 IMPORTANCE=3)
testpool(min=2 max=2 IMPORTANCE=2)
database: pmssn,test
pmssn in upgrade_pool
test in testpool
srvctl modify serverpool -g upgrade_pool -l 1 -u 2 -i 3 -n "server1,server2" -f
NAME=ora.testpool
IMPORTANCE=2
MIN_SIZE=2
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp
install:rwx,other::r--
ACTIVE_SERVERS=server1
NAME=ora.upgrade_pool
IMPORTANCE=3
MIN_SIZE=1
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r--
ACTIVE_SERVERS=server2
配置5:
server:server1,server2
serverpool:upgrade_pool(min=1 max=2 IMPORTANCE=2)
testpool(min=1 max=2 IMPORTANCE=2)
database: pmssn,test
pmssn in upgrade_pool,testpool
test in serpool
srvctl modify serverpool -g upgrade_pool -l 1 -u 2 -i 2 -n "server1,server2" -f
srvctl modify serverpool -g testpool -l 1 -u 2 -i 2 -n "server1,server2" -f
srvctl modify database -d test -g "upgrade_pool,testpool"
srvctl modify database -d test -g "ora.testpool"
NAME=ora.testpool
IMPORTANCE=2
MIN_SIZE=1
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r--
ACTIVE_SERVERS=server1
NAME=ora.upgrade_pool
IMPORTANCE=2
MIN_SIZE=1
MAX_SIZE=2
SERVER_NAMES=server1 server2
PARENT_POOLS=
EXCLUSIVE_POOLS=
ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r--
ACTIVE_SERVERS=server2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server2
ora.cvu
1 ONLINE ONLINE server2
ora.oc4j
1 ONLINE ONLINE server2
ora.pmssn.db
1 ONLINE OFFLINE Instance Shutdown
2 OFFLINE OFFLINE Instance Shutdown
ora.server1.vip
1 ONLINE ONLINE server1
ora.server2.vip
1 ONLINE ONLINE server2
ora.scan1.vip
1 ONLINE ONLINE server2
ora.test.db
1 ONLINE ONLINE server1 Open
2 ONLINE ONLINE server2 Open
配置6:
server:server1,server2
serverpool:upgrade_pool(min=1 max=2 IMPORTANCE=2)
testpool(min=1 max=2 IMPORTANCE=2)
database: pmssn,test
pmssn in upgrade_pool,testpool
test in upgrade_pool,testpool
srvctl modify database -d pmssn -g "upgrade_pool,testpool"
srvctl start database -d pmssn
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE server2
ora.cvu
1 ONLINE ONLINE server2
ora.oc4j
1 ONLINE ONLINE server2
ora.pmssn.db
1 ONLINE ONLINE server1 Open
2 ONLINE ONLINE server2 Open
ora.server1.vip
1 ONLINE ONLINE server1
ora.server2.vip
1 ONLINE ONLINE server2
ora.scan1.vip
1 ONLINE ONLINE server2
ora.test.db
1 ONLINE ONLINE server1 Open
2 ONLINE ONLINE server2 Open
11GR2 没有 policyset,该功能在12c中实现,该功能可分时间段分配server 到serverpool
如策略如下:实现资源的合理分配,提高系统最大处理能力
1:DAY TIME:
upgrade_pool use two servers
testpool use one server
2: Night Time:
upgrade_pool use one server
testpool use two servers
3: Weekend:
upgrade_pool use two server
testpool use zero servers
2017.8.16
孙显鹏