免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11453 | 回复: 12
打印 上一主题 下一主题

应用程序如何连接RAC数据库?使用哪个vip?某节点当掉,这个vip还能不能使用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-16 15:28 |只看该作者 |倒序浏览
偶查了下资料,说oracle10g虽然可以让vip切换(漂移)到另外一个node上,但是得到这个vip地址的node是不能使用这个vip地址进行oracle连接的,只是会快速报“无监听程序”的错误,比超时速度快。

但是,这样的话,说明RAC群集不对应用程序透明,应用程序不就得事先把每一个vip作为数据库连接参数,然后做轮询?哪个可以连就连那个?

不知道有没有更好的办法?

论坛徽章:
0
2 [报告]
发表于 2007-07-17 08:36 |只看该作者
不知道,反正不影响使用喽

论坛徽章:
0
3 [报告]
发表于 2007-07-17 10:01 |只看该作者
如果listener 监听配置的是ip ,那么它只接受来自这个ip的请求,这样飘逸过来的vip是不能被监听的。

但是如果listener 监听配置的是hostname,那么飘逸过来的vip是可以被监听的。

论坛徽章:
0
4 [报告]
发表于 2007-07-17 10:26 |只看该作者
10g rac vip漂移的目的不是让client不加改变的连接过来
而是让client尽快收到一个连接终止的包,然后由client去连接tnsnames中配置的下一个地址。
和没有vip相比, 使用vip可以减少由于db当机而引起的client等待。

论坛徽章:
0
5 [报告]
发表于 2007-07-17 10:43 |只看该作者
原帖由 blue_stone 于 2007-7-17 10:26 发表
10g rac vip漂移的目的不是让client不加改变的连接过来
而是让client尽快收到一个连接终止的包,然后由client去连接tnsnames中配置的下一个地址。
和没有vip相比, 使用vip可以减少由于db当机而引起的client等待。



你说的是在tnsnames中设置vip地址和pub ip的区别,设置vip减少了failover时间。但是漂移过来的vip不会被监听。

但是我如果在tnsnames中设置的连接是对应的主机hostname呢,这样oracle 认为你是期望监听这个主机的所有地址的请求,这样vip 漂移过来后也满足被监听的条件,正好应用也可以连接这个vip。

论坛徽章:
0
6 [报告]
发表于 2007-07-17 16:53 |只看该作者
南非蚂蚁,我的RAC两个node的db_homeDir/network/admin/tnsnames.ora默认装好就是用的hostname配置的,但是我关了一台node,vip漂移过去了,但是这个vip还是连不上的。

找了资料,说应用程序是用TAF来做,但是搞不懂client端的OCI到底要怎么配置才能透明的连接RAC???

论坛徽章:
0
7 [报告]
发表于 2007-07-17 18:05 |只看该作者
to skysnowolf:
你是不是希望一个节点dang掉后client可自动连接到数据库?
参考下面的文件配置client的tnsnames.ora

  1. svc2 =
  2.   (DESCRIPTION =
  3.     (ADDRESS_LIST =
  4.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.12)(PORT = 1521))
  5.     )
  6.     (CONNECT_DATA =
  7.       (SERVICE_NAME = svc)
  8.     )
  9.   )

  10. svc1 =
  11.   (DESCRIPTION =
  12.     (ADDRESS_LIST =
  13.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))
  14.     )
  15.     (CONNECT_DATA =
  16.       (SERVICE_NAME = svc)
  17.     )
  18.   )

  19. svc =
  20.   (DESCRIPTION =
  21.     (ADDRESS_LIST =
  22.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.12)(PORT = 1521))
  23.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))
  24.     )
  25.     (CONNECT_DATA =
  26.       (SERVER = DEDICATED)
  27.       (SERVICE_NAME = svc)
  28.       (FAILOVER_MODE=
  29.        (TYPE = select)
  30.        (METHOD = basic)
  31.        (DELAY = 10)
  32.       )
  33.     )
  34.   )
复制代码

更具体的配置请参考oracle rac administrator guide

论坛徽章:
0
8 [报告]
发表于 2007-07-18 09:26 |只看该作者
我在client的tnsnames.ora中设置如下:

  1. RAC =
  2.   (DESCRIPTION =
  3.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.248)(PORT = 1521))
  4.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.249)(PORT = 1521))
  5.     (LOAD_BALANCE = on)
  6.     (FAILOVER = on)
  7.     (CONNECT_DATA =
  8.       (SERVER = DEDICATED)
  9.       (SERVICE_NAME = RAC.WORLD)
  10.       (FAILOVER_MODE=
  11.         (TYPE=select)
  12.         (method=basic)
  13.         (retries = 200)
  14.         (delay = 5)
  15.       )
  16.     )
  17.   )

  18. LISTENERS_RAC =
  19.   (ADDRESS_LIST =
  20.     (FAIL_OVER=on)
  21.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.248)(PORT = 1521))
  22.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.249)(PORT = 1521))
  23.   )

  24. RAC1 =
  25.   (DESCRIPTION =
  26.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.248)(PORT = 1521))
  27.     (CONNECT_DATA =
  28.       (SERVER = DEDICATED)
  29.       (SERVICE_NAME = RAC.WORLD)
  30.       (INSTANCE_NAME = RAC1)
  31.     )
  32.   )

  33. RAC2 =
  34.   (DESCRIPTION =
  35.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.249)(PORT = 1521))
  36.     (CONNECT_DATA =
  37.       (SERVER = DEDICATED)
  38.       (SERVICE_NAME = RAC.WORLD)
  39.       (INSTANCE_NAME = RAC2)
  40.     )
  41.   )
复制代码


然后我用sqlplus sys/password@rac as sysdba连上后,停掉被连接的这太机器,然后sqlplus中做查询语句,发现要等起码10s以上,确实是可以切换到node2上。

但是这里还有两个问题
1.为何select failover_type,failover_method,failed_over from v$session;只看到:
SELECT        BASIC      NO
SELECT        BASIC      YES
其他都是no

2.直接用oci链接的应用程序怎么做切换?因为直接用oci做链接的应用程序,链接数据库的connect类的链接初始化函数只是传入username,password,ip,sid,并不读tnsnames.ora,那这时怎么办?

论坛徽章:
0
9 [报告]
发表于 2007-07-18 09:50 |只看该作者
如果要使用tns的failover方式,客户端不能使用instant client连接方式

可以参考RAC的官方文档

论坛徽章:
0
10 [报告]
发表于 2007-07-18 10:23 |只看该作者
楼上的,不要吓我,是不是确定的?

但是我看过几个jdbc的连接,可以把tnsnames.ora中的连接信息包括failover信息加到jdbc connecter中的,目前就是找不到oci的方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP