集群中某个节点出现故障后,该节点的VIP资源会漂移到集群中健康的节点上。
在健康节点上通过crsctl stat res -t命令中可以看到故障节点的vip资源状态为“INTERMEDIATE”,详细信息是"FAILED OVER"。健康节点的public网卡上可以看到漂移过来的VIP地址。当故障节点恢复后,VIP资源会重新漂移回去。
在正常情况下,客户端连接数据库,客户端tnsnames.ora文件中要提供监听地址以及监听器中注册的服务名。在RAC中,LISTENER监听器监听的地址在监听创建的时候由Oraagent自动添加,是本节点的PUBLIC IP和VIP。SCAN_LISTENER监听SCAN VIP地址。LISTENER监听器中的服务由PMON进程将本地的服务注册到参数local_listener指定的监听器中,SCAN_LISTENER监听器由remote_listener参数指定。
因此要让健康节点的监听器提供故障节点的vip上的服务,只需要在健康节点上的监听器中添加故障节点的VIP,然后重启监听器生效。
在$GRID_HOME/network/admin/listener.ora中添加故障节点的VIP地址。假如我的VIP地址是192.168.5.215
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.215)(PORT = 1521))
)
)
重启监听,检查注册的服务状态
lsnrctl status
测试连接
sqlplus test/test@192.168.5.215:1521/orcl