Oracle RAC中的几个IP

Oracle 11g开始,设置了SCAN ip,除此之外还有public ip,virtual ip,private ip,容易让人理不清。

下面逐一解释:

public ip:

类似与单实例的oracle数据库ip,主要用于管理\访问。

virtual ip(vip):

oracle在rac架构中专用,这个vip用于实现故障转移,当一个节点发生故障时,其vip会“浮动”到另外一个正常的节点,也即该正常节点对应着两个vip了。

SCAN:

Single Client Access Name,单一客户访问名称,意思是客户端(如jdbc,pl/sql等)访问数据库时的公共域名,由于rac是多节点的,客户端要访问数据库,通过scan机制,只需要提供一个访问名称,oracle rac会自动为客户端分配一个节点,这对客户端来说是透明的。

private ip:私有ip,oracle 内部用于节点间通讯的ip,不对外开放。

public ip:

必须是专用ip,必须在安装oracle rac前配置好,能与网络连通。public ip,vip,scan ip必须在同一个网络网段内。

vip:

必须是专用ip,必须安装oracle rac前配置好,能与网络连通,public ip,vip,scan ip必须在同一个网络网段内。该ip及域名虽然配置,但必须保持不能使用(不能被访问,如ping)。

scan :

建议通过dns配置三个专用ip,在安装前必须配置好,当有请求者时,由dns随机分配。暂不使用。scan ip需要给出唯一的名字,也即三个ip对应一个域名。名字只能是字符和'-'。oracle不推荐通过hosts文件来配置,那样只能得到一个scan ip。

scan也是一个虚拟ip名,类似与虚拟ip名,但不同的是,虚拟ip是一个节点一个ip地址一个域名,scan是针对整个cluster的,一个域名对应着多个节点,多个ip地址。

private ip:

必须是专用ip,必须在安装前配置好,必须在一个专用私有网络中,只能被另外的rac节点解析,不能被其它网络解析。从11.2.0.2开始,oracle可以自动使用至多4块私有网卡,以实现内部节点的负载均衡及冗余。 

GNS:Grid Naming Service。

以下是网上的资料

Oracle RAC环境下,每个节点都会有多个IP地址,分别为Public/Private/Vip,这三个IP到底有啥区别呢?分别用在那些场合呢?来看看老外的回答。
1. private IP address is used only for internal clustering processing (Cache Fusion)
私有IP用于心跳同步,这个对于用户层面,可以直接忽略,简单理解,这个Ip用来保证两台服务器同步数据用的私网IP。
2. virtual IP is used by database applications to enable fail over when one cluster node fails
虚拟IP用于客户端应用,以支持失效转移,通俗说就是一台挂了,另一台自动接管,客户端没有任何感觉。
这也是为什么要使用RAC的原因之一,另一个原因,我认为是负载均衡。
3. public IP adress is the normal IP address typically used by DBA and SA to manage storage, system and database.
公有IP一般用于管理员,用来确保可以操作到正确的机器,我更愿意叫他真实IP。


通过上述解释,不难理解作为一个DBA,在配置tnsnames.ora时,有些场合是要使用的vip,而有些场合又必须使用public IP。例如,当你在定位一个数据库的死锁时,使用public ip,可以确保连到你想处理的机器,相反此时使用虚拟ip时,会出现不确定性,因为服务器默认是开启负载均衡的,也就是有可能你想连A机,系统却给你分配了B机。
 
例如:

下面的例子就是使用的VIP

infodb8 =

  (DESCRIPTION=

    (ADDRESS=(PROTOCOL= TCP)(HOST=138.*.1.81)(PORT= 1521))

    (ADDRESS=(PROTOCOL= TCP)(HOST=138.*.1.82)(PORT= 1521))

    (LOAD_BALANCE= yes)

    (FAILOVER= ON)

    (CONNECT_DATA=

      (SERVER= DEDICATED)

      (SERVICE_NAME= infodb)

      (FAILOVER_MODE=

        (TYPE=SELECT)

        (METHOD= BASIC)

        (RETRIES= 30)

        (DELAY= 5)

      )

      )) 

下面的例子就是使用的Public IP,指定连接1机,注意红色字体infodb1进一步限制连接的实例。

INFODB83 =

  (DESCRIPTION=

    (ADDRESS_LIST=

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1673faf5fba328d75b9a85d6efeb9680.html