
严格来说应该称为SCAN VIP(虚拟IP),而不是SCAN IP。SCAN VIP可以高可用地漂移在活动的数据库节点上。
SCAN VIP是SCAN Listener的监听地址。一个SCAN VIP对应一个SCAN Listener,它们会工作在同一台服务器节点上,SCAN Listener飘到哪个节点上,SCAN VIP也就飘到哪个节点上。同理,SCAN Listner的数量是三个。
三个SCAN VIP对应同一个DNS名,也就是所谓的SCAN(单一客户访问名)。
客户端的TNS里配置的绝对不是SCAN VIP的"IP",而是SCAN VIP对应的DNS名。这样,无论节点添加还是删除,客户端可以不用做任何修改。
再提醒一下,SCAN VIP的数量不与数据库节点的数量一致。
我曾做过8个节点的11gR2 RAC,SCAN VIP和SCAN Listener的数量是:三个!
这个问题不难!11gR2中,引入了SCAN(SingleClientAccessName)的特性,该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的scanip以及scaniplistener,在客户端仅需要配置scanip的tns信息,通过scaniplistener,连接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的 *** 作,均不会对client产生影响。当有客户端应用程序使用SCANip访问数据库时,scanlistener会将连接转发到locallistener上。原则上scanip数量于数据库结点(正常提供服务的)数量一致在Oracle 11gR2以前,如果数据库采用了RAC架构,在客户端的tnsnames中,需要配置多个节点的连接信息,从而实现诸如负载均衡,failover等等RAC的特性。因此,当数据库RAC集群需要添加或删除节点时,需要及时对客户端机器的tns进行更新,以免出现安全隐患。在11gR2中,为了简化该项配置工作,引入了SCAN(Single Client Access Name)的特性,该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的scan ip以及scan ip listener,在客户端仅需要配置scan ip的tns信息,通过scan ip listener,连接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的 *** 作,均不会对client产生影响。
例如之前没有scan ip时:
url="jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.10)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.101.20)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = bjdig)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC)(RETRIES = 30)(DELAY = 15))))"
有了scan ip 就和单机是一样的,用scan ip即可,如:
jdbc:Oracle:thin:@172.18.2.6:1521:apps
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)