好了,在安装完flex cluster和将leaf node转换为hub node之后,我们现在开始装2节点的rac。
先是安装数据库软件,这很容易,这边省略不讲了。我要讲的是安装完数据库软件之后,我用dbca建库,建库过程没报什么错,但是却发现完成后,2个节点只有一个节点有db instance,另一节点就是没有db instance。db instance只能启动在一个节点上。
我们先来看看安装过程。也是看图说话。
注意我这里选了policy-managed,而非传统的administrator-managed。
注意这里,由于之前选的是policy-managed,所以这里就出现了一个要求指定server pool的选项。可以create new server pool,也可以选择已经有的。注意这边的默认cardinality是1。
在此后面的步骤,我就不贴了,因为都是常规的建库,一路next下去就行。
安装一路都没有报错,安装完成后启动后发现,db instance只能存在于一个节点中,如一开始cdbrac_1存在在节点1上,只有等节点1宕机后,cdbrac_2才会在节点2起来,仿佛就像一个rac one node,但是奇怪,我安装的是rac,不是rac one node呀。如果是one node,instance name应该是唯一的。
细细回想安装过程,觉得和cardinality有关,一查文档,果然。
A policy-managed database is defined by cardinality, which is the number of database instances you want running during normal operations.
原来在policy-managed方式cluster,节点被分成了若干个server pool,我定义的myservpool中,cardinality为1,也就是定义了在这个2节点的server pool中,允许running的db instance只有1个。注:server pool的概念其实在11g就有了。
ok,既然知道了原因,那就改回来吧。
--检查当前server pool的情况,可以看到节点2是在free server pool中, [oracle@ol6-121-rac1 ~]$ srvctl status srvpool -detail Server pool name: Free Active servers count: 1 Active server names: ol6-121-rac2 NAME=ol6-121-rac2 STATE=ONLINE Server pool name: Generic Active servers count: 0 Active server names: Server pool name: myservpool Active servers count: 1 Active server names: ol6-121-rac1 NAME=ol6-121-rac1 STATE=ONLINE --修改cardinality的为2,即max为2 [oracle@ol6-121-rac1 ~]$ srvctl modify srvpool -serverpool myservpool -max 2 --再次检查,发现free server pool已经为0,2个节点都划在了myservpool中了,当前都是online状态。注:这里的online是指server的情况。表示节点在cluster中,服务器没有down。 [oracle@ol6-121-rac1 ~]$ srvctl status srvpool -detail Server pool name: Free Active servers count: 0 Active server names: Server pool name: Generic Active servers count: 0 Active server names: Server pool name: myservpool Active servers count: 2 Active server names: ol6-121-rac1,ol6-121-rac2 NAME=ol6-121-rac1 STATE=ONLINE NAME=ol6-121-rac2 STATE=ONLINE [oracle@ol6-121-rac1 ~]$
此时如果ps还是没发现db进程,可以手工将其起来:
--start instance [oracle@ol6-121-rac1 ~]$ srvctl start instance -db cdbrac -instance cdbrac_2 --检查db instance 情况: [oracle@ol6-121-rac1 ~]$ srvctl status database -db cdbrac Instance cdbrac_1 is running on node ol6-121-rac1 Instance cdbrac_2 is running on node ol6-121-rac2
ok,我们现在已经改成2个了,那么如果要改回去,怎么改?也很简单,只是注意一下已经起来的instance,如果要改小cardinality,可能会报错资源正在被使用,需要加force的参数来强制关闭。
--改回1,报错资源still running [oracle@ol6-121-rac1 ~]$ srvctl modify srvpool -serverpool myservpool -max 1 PRCS-1011 : Failed to modify server pool myservpool CRS-2736: The operation requires stopping resource 'ora.cdbrac.db' on server 'ol6-121-rac1' CRS-2738: Unable to modify server pool 'ora.myservpool' as this will affect running resources, but the force option was not specified [oracle@ol6-121-rac1 ~]$ --加force参数强制关闭 [oracle@ol6-121-rac1 ~]$ srvctl modify srvpool -serverpool myservpool -max 1 -force -verbose --检查db instance情况 [oracle@ol6-121-rac1 ~]$ srvctl status database -db cdbrac Instance cdbrac_2 is running on node ol6-121-rac2 --检查server pool情况: [oracle@ol6-121-rac1 ~]$ srvctl status srvpool -detail Server pool name: Free Active servers count: 1 Active server names: ol6-121-rac1 NAME=ol6-121-rac1 STATE=ONLINE Server pool name: Generic Active servers count: 0 Active server names: Server pool name: myservpool Active servers count: 1 Active server names: ol6-121-rac2 NAME=ol6-121-rac2 STATE=ONLINE [oracle@ol6-121-rac1 ~]$
好了,关于flex cluster的学习过程,就写到这里。太长的一篇文章拆成了3篇。在安装和测试的过程中,大小问题也经历不少。也认识到了不少新的特性,新的功能。Flex cluster,Flex asm,Serverpool,这些新东西不知道会被多少人使用,拭目以待……