10G RAC VIP漂移后客户端的连接


环境: 10.2.0.4 RAC


当节点1出现故障,节点的vip漂移到节点2后,客户端怎么连接节点1的VIP地址??


[oracle@rac2 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    ONLINE    ONLINE    rac2        
ora....l1.inst application    ONLINE    OFFLINE               
ora....l2.inst application    ONLINE    ONLINE    rac2        
ora....SM1.asm application    ONLINE    OFFLINE               
ora....C1.lsnr application    ONLINE    OFFLINE               
ora.rac1.gsd   application    ONLINE    OFFLINE               
ora.rac1.ons   application    ONLINE    OFFLINE               
ora.rac1.vip   application    ONLINE    ONLINE    rac2        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2   

查看客户端连接数据库的tnsnames文件的配置

10GRAC2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.118)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

10GRAC1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.117)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

可以看出连接串10GRAC1连接IP 192.168.56.118,连接串10GRAC2连接IP 192.168.56.119,采用SERVICE_NAME。


查看数据库服务器端hosts文件配置

[oracle@rac1 ~]$ cat /etc/hosts

192.168.56.115  rac1
192.168.56.116  rac2
192.168.56.117  rac1-vip
192.168.56.118  rac2-vip
10.10.10.2      rac1-priv
10.10.10.3      rac2-priv


当节点1宕机后,节点1的VIP漂移至节点2上

[oracle@rac2 ~]$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:9B:83:FF  
          inet addr:192.168.56.116  Bcast:192.168.56.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:266 errors:0 dropped:0 overruns:0 frame:0
          TX packets:269 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:40809 (39.8 KiB)  TX bytes:46375 (45.2 KiB)

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:9B:83:FF  
          inet addr:192.168.56.118  Bcast:192.168.56.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:2    Link encap:Ethernet  HWaddr 08:00:27:9B:83:FF  
          inet addr:192.168.56.117  Bcast:192.168.56.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  HWaddr 08:00:27:2D:84:02  
          inet addr:10.10.10.3  Bcast:10.10.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:50728 errors:0 dropped:0 overruns:0 frame:0
          TX packets:43537 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:36890067 (35.1 MiB)  TX bytes:24193321 (23.0 MiB)


此时客户端连接数据库会出现以下报错:

C:\Users\zylong>sqlplus sys/oracle@10grac1 as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on 星期五 8月 12 11:40:42 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:
ORA-12541: TNS: 无监听程序


请输入用户名:


查看节点2的监听listener文件

[oracle@rac2 admin]$ cat listener.ora 
# listener.ora.rac2 Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora.rac2
# Generated by Oracle configuration tools.

LISTENER_RAC2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521)(IP = FIRST))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.116)(PORT = 1521)(IP = FIRST))
    )
  )

SID_LIST_LISTENER_RAC2 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )


修改 节点2的监听 listener文件如下:

LISTENER_RAC2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
    )
  )


SID_LIST_LISTENER_RAC2 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )


此时客户端连接数据库正常

C:\Users\zylong>sqlplus sys/oracle@10grac1 as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on 星期五 8月 12 11:49:07 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options

SQL>
SQL>
SQL> show parameter name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
db_name                              string      orcl
db_unique_name                       string      orcl
global_names                         boolean     FALSE
instance_name                        string      orcl2
lock_name_space                      string
log_file_name_convert                string
service_names                        string      orcl

如果关键字HOST配置为IP地址解析名,则绑定步骤如下:

(1)oracle根据IP地址解析名调用gethostbyname()函数取得IP地址(IP地址可能有多个)。

(2)oracle调用gethostname()函数获取服务器的主机名,并再次调用gethostbyname()函数获取主机名对应的IP地址(IP地址可能有多个)。

(3)将步骤(1)获取的第一个IP地址和步骤(2)获取的所有IP地址进行比对,如果匹配成功,则监听运行在该服务器所有激活的网卡上。如果匹配不成功,则监听只运行在步骤(1)解析出来的Ip地址上。


结论:如果关键字HOST配置为主机名,则监听运行在该服务器所有激活的网卡上。

注意:如果将关键字HOST设置为主机名,当加有关键字IP=FIRST时,监听只运行在主机名对应的IP地址上,这种配置在oracle 10G RAC系统中较为常见。







  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值