环境:Oracle 11.2.0.4 RAC(2 nodes)
1.查看RAC IP配置信息
我们先查看下环境的IP分配情况,一般确认/etc/hosts配置无误,可直接快速看下hosts配置相关内容:
#public ip
192.168.1.61 jystdrac1
192.168.1.63 jystdrac2
#virtual ip
192.168.1.62 jystdrac1-vip
192.168.1.64 jystdrac2-vip
#scan ip
192.168.1.65 jystdrac-scan
服务名选择系统名+VIP最后一位,即crm62、crm64,从而便于区分服务名默认优先连接哪一个节点;
2.添加服务名并启动服务
正常情况下,只连接到某一个节点进行跑批从而最大化避免gc类等待,但要求如果该节点发生故障,是可以连接到另外节点的。这里就主要用到-r
和-a
两个参数分别指定preferred instances和available instances,下面具体规划为:
服务名 crm62 的 preferred instances 是 crmdb1,available instances 是 crmdb2
服务名 crm64 的 preferred instances 是 crmdb2,available instances 是 crmdb1
[oracle@jystdrac1 ~]$
srvctl add service -d crmdb -s crm62 -r "crmdb1" -a "crmdb2"
srvctl add service -d crmdb -s crm64 -r "crmdb2" -a "crmdb1"
srvctl start service -d crmdb -s "crm62,crm64"
注意:
1.不需要sqlplus下使用alter system 命令去修改service_names参数值,因为添加对应服务名且服务启动后,服务名就会自动增加对应值;
2.一般适用于跑批等特殊业务场景,用于防止不必要的gc产生反而影响效率。
3.停止服务并删除服务名
这一步属于是回退方案,不管因为什么原因,想去掉新增的服务名,只需停止并删除对应服务名,应用修改为之前的连接配置即可。
[oracle@jystdrac1 ~]$
srvctl stop service -d crmdb -s "crm62,crm64"
srvctl remove service -d crmdb -s crm62
srvctl remove service -d crmdb -s crm64