代码改变世界

小知识:Oracle RAC添加服务名实现单节点访问

2020-08-03 22:07  AlfredZhao  阅读(459)  评论(0编辑  收藏

环境: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