因业务需要,需要修改现有数据库环境中的scan ip。一般多在单机迁移到rac后,应用不想在代码中修改连接数据库的ip,那么原单机的ip在rac中就变成了scan ip。
修改为scan ip要确保原单机的ip下线,不然会冲突,scan ip可以理解为虚拟ip,所以不涉及在硬件网卡上修改。
需求:
目前单机对外访问的ip地址为192.168.56.15,当前新搭建的rac集群ip地址为192.168.56.14,将192.168.56.15变更为rac集群的scan ip,并且为新的scan ip设置新域名。
任意节点的grid用户上执行:
[grid@rac1 ~]$ srvctl stop scan_listener ---停止Cluster Resources组件的ora.LISTENER_SCAN1.lsnr
[grid@rac1 ~]$ srvctl stop scan ---停止Cluster Resources组件的ora.scan1.vip(需要先停scan_listener,如果先停scan,报because that would require stopping or relocating 'ora.LISTENER_SCAN1.lsnr')
组件scan_listener和scan关系:
1)scan_listener组件控制着远程监听LISTENER_SCAN1的启停状态
2)scan组件控制着远程监听LISTENER_SCAN1的scan ip、域名
节点一:
[root@rac1 ~]# vi /etc/hosts ---建议只修改新的scan ip,域名不建议修改,因为修改了域名所有实例都要修改remote_listener参数,通过新的域名才能映射到新的ip上才能注册在scan监听上,不然实例不会注册新的scan ip和域名上。
#scan 删除
192.168.56.14 racscan
#scan 新增
192.168.56.15 racscanip
节点二:
[root@rac2 ~]# vi /etc/hosts ---建议只修改新的scan ip,域名不建议修改,因为修改了域名所有实例都要修改remote_listener参数,通过新的域名才能映射到新的ip上才能注册在scan监听上,不然实例不会注册新的scan ip和域名上。
#scan 删除
192.168.56.14 racscan
#scan 新增
192.168.56.15 racscanip
修改OCR注册信息(任意节点使用root用户):
[root@rac1 bin]# su - root
[root@rac1 bin]# cd /oracle/app/11.2.0/grid/bin
[root@rac1 bin]# ./srvctl modify scan -n racscanip --- -n后面跟scan_name就是scan ip后面写的域名,如果还写之前的racscan就会报PRCS-1016 : Failed to resolve Single Client Access Name racscan,因为oracle会自动找到/etc/hosts对应域名的ip。
[root@rac1 bin]# ./srvctl config scan
注意:指定了域名,oracle会自动将/etc/hosts对应域名的ip找到,指定为scan ip
[root@rac1 bin]# ./srvctl start scan ---启动Cluster Resources组件的ora.scan1.vip
[root@rac1 bin]# ./srvctl start scan_listener ---启动Cluster Resources组件的ora.LISTENER_SCAN1.lsnr
[root@rac1 bin]# ./srvctl status scan
[root@rac1 bin]# ./crsctl status resource -t
[grid@rac1 ~]$ lsnrctl status LISTENER_SCAN1 ---由于/etc/hosts文件的scan ip域名之前是racscan,现在变为了racscanip,那么数据库中的remote_listener参数也要变动,通过新的域名才能映射到新的ip上才能注册在scan监听上,不然实例不会注册新的scan ip和域名上。
节点一的oracle用户:
SQL> show parameter listener
local_listener:实例orcl1只是本地实例(LISTENER),所以只需要注册到本地监听上,ip是本机虚拟ip
remote_listener:用于注册在scan监听上(LISTENER_SCAN1),scan监听用于连接多个实例所以要注册上去
注:remote_listener中的racscan为/etc/hosts的域名,通过域名映射到ip(也是就scan ip),那么就实例就注册到了LISTENER_SCAN1(LISTENER_SCAN1注册的是scan ip)上了,如果/etc/hosts的racscan域名变动,数据库中的remote_listener参数也要变动。
节点二的oracle用户:
SQL> show parameter listener
local_listener:实例orcl2只是本地实例(LISTENER),所以只需要注册到本地监听上,ip是本机虚拟ip
remote_listener:用于注册在scan监听上(LISTENER_SCAN1),scan监听用于连接多个实例所以要注册上去
注:remote_listener中的racscan为/etc/hosts的域名,通过域名映射到ip(也是就scan ip),那么就实例就注册到了LISTENER_SCAN1(LISTENER_SCAN1注册的是scan ip)上了,如果/etc/hosts的racscan域名变动,数据库中的remote_listener参数也要变动。
任意节点上执行:
SQL> alter system set remote_listener='racscanip:1521'; ---remote_listener设置的值racscanip
为/etc/hosts的域名,通过域名映射到ip(也是就scan ip),那么就实例就注册到了LISTENER_SCAN1(LISTENER_SCAN1注册的是scan ip)上了,如果/etc/hosts的racscan域名变动,那么remote_listener参数也要变动。
[grid@rac1 ~]$ lsnrctl status LISTENER_SCAN1 ---设置了新的域名后实例成功注册到新的域名和ip上。文章来源:https://www.toymoban.com/news/detail-768759.html
文章来源地址https://www.toymoban.com/news/detail-768759.html
到了这里,关于Oracle篇—单机对外访问的IP变更为rac集群的scan ip的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!