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

来源:互联网 发布:手机摄像头监控软件 编辑:程序博客网 时间:2024/05/20 18:03


环境: 10.2.0.4 RAC


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


[oracle@rac2 ~]$ crs_stat -tName           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/hosts192.168.56.115  rac1192.168.56.116  rac2192.168.56.117  rac1-vip192.168.56.118  rac2-vip10.10.10.2      rac1-priv10.10.10.3      rac2-priv


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

[oracle@rac2 ~]$ ifconfig -aeth0      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:1eth0: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:1eth1      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 sysdbaSQL*Plus: Release 11.2.0.4.0 Production on 星期五 8月 12 11:40:42 2016Copyright (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 sysdbaSQL*Plus: Release 11.2.0.4.0 Production on 星期五 8月 12 11:49:07 2016Copyright (c) 1982, 2013, Oracle.  All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing optionsSQL>SQL>SQL> show parameter nameNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_file_name_convert                 stringdb_name                              string      orcldb_unique_name                       string      orclglobal_names                         boolean     FALSEinstance_name                        string      orcl2lock_name_space                      stringlog_file_name_convert                stringservice_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