本文主要讲解“RAC数据库环境下如何解决scanip修改后客户端连接异常的问题”。本文的讲解内容简单明了,易学易懂。请跟随边肖的思路,一起学习学习“RAC数据库环境下如何解决scanip修改后客户端连接异常”。
在摘要:,的一个项目中,有必要将一个rac数据库迁移到另一个具有相同网段和数据库名称的rac。迁移后,发现新数据仍会插入旧数据库,但新数据库中没有新数据。
00-1010,一个rac数据库需要迁移到项目中的另一个rac,这两个rac集具有相同的网段和数据库名称。这里旧的rac环境叫rac a,新的rac环境叫rac b,正式迁移数据库的时候发现了一个问题。即使RAC B的扫描ip与rac a相同,迁移后发现程序连接到旧数据库rac a,所有数据都存在于旧数据库中,但没有新数据进入新的RAC B.
经调查发现,rac a和rac b在修改扫描ip后没有重启数据库或集群,应用程序的数据库连接字符串没有问题。为什么数据仍然被插入旧数据库?经过下面的场景模拟,我们可以得到答案。
两个rac环境从10到1010部署在本地,具有相同的网段,但唯一的区别是db_name不同于RAC A。
db_name:orcldb
部署后扫描IP:172 . 16 . 4 . 125。
要修改的新扫描IP是172.16.4.140。
rac b
db_name:orcl
部署后扫描IP:172 . 16 . 4 . 135。
要修改的新扫描ip扫描ip:172.16.4.125(rac b使用rac a的扫描ip)。
以上是模拟数据库迁移后,客户端程序是否可以在不改变数据库连接字符串的情况下连接到正确的数据库。
使用客户端分别连接两组rac扫描ip。
连接前检查rac a,rac b的dbid便于后期验证。
场景1: sqlplus使用172.16.4.125连接到rac b。
结果:rac b无法连接。
场景2: sqlplus使用相同的扫描ip 172.16.4.125,但是服务名是rac a的db_name。
结果:检查dbid后,客户端实际连接的数据库是rac a,而不是RAC B。
场景3:重新启动rac b上的数据库,客户再次连接。
结果:rac b重启后,检查dbid,真实数据库由sqlplus连接。
之所以在项目环境中将数据从一个rac迁移到另一个rac时没有发现问题,是因为迁移后的扫描ip和db_name与原来的完全相同,但是数据库没有重新启动,所以很难在项目现场暴露问题。
一、场景简介
从上面的实验可以知道,修改rac扫描ip后,需要重新启动数据库。此外,在MOS 1373350.1作为11g rac上也发现了这个bug。如果数据库没有重新启动,也可以通过重置remote_listener参数来解决。虽然mos说它在11.2.0.3已经被修复了,但在11.2.0.4仍然可能有这个bug。
mos文件如下:
主题使用canvipandlisteners进行安全故障排除(文档ID1373350.1)。
问题#5:nbs
p;Service not getting registered with SCAN listener after failover of the SCAN listener
After SCAN VIP and SCAN listener failover, instance does not register with the SCAN listener.
It might happen for only 1 of the scan listener. Client connection gets intermittent ORA-12514 TNS:listener does not currently know of service requested in connect descriptor.
Causes:
1. Unpublished Bug 12659561 after scan listener failover, database instance might not register to the scan listener (refer Note 12659561.8 ), fixed in 11.2.0.3.2, merge patch 13354057 for 11.2.0.2 available for certain platform.
2. Unpublished Bug 13066936 Instance does not register services when scan fails over (refer Note 13066936.8 )
Solutions:
1) For both above bugs, the workaround is to unregister and register remote listener on the database instance which does not register to a SCAN listener with following steps.
show parameter remote_listener
alter system set remote_listener='';
alter system register;
alter system set remote_listener='<scan>:<port>';
alter system register;
2) Other points to check if service is not registered with SCAN listener:
a. remote_listener and local_listener is defined correctly
b. EZCONNECT is defined in sqlnet.ora, eg: NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
c. SCAN name with 3 IPs should NOT be defined in /etc/hosts, it should be defined in DNS
d. running nslookup <scan> multiple times should display SCAN VIP in round-robin fashion
e. do not set SECURE_REGISTER_<listener> in listener.ora if the class of secure transports (COST) is not configured.
感谢各位的阅读,以上就是“怎么解决RAC数据库环境修改scanip后客户端连接异常”的内容了,经过本文的学习后,相信大家对怎么解决RAC数据库环境修改scanip后客户端连接异常这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/70310.html