经过一周的奋斗,终于把 ORACLE 11G R2 的RAC环境搭起来了,搭起来后的第一件事情就是测试一下该版本中
的新特性 SCAN。没想到这样一个简单的测试竟然遇到了不少的问题,花了半个时间。这里给大家分享一下希望对
大家有所启发和帮助。1.通过SCAN不能连接数据库,提示The Network Adapter could not establish the connection
   我的SCAN域名为rac-scan.wanmeibi.com(10.3.0.211,10.3.0.212),ping rac-scan.wanmeibi.com能通,但是
连接数据库却总是失败,总是报上面的错,百思不得其解,最后用ETHREAL 抓包后发现了问题。
   下面是包的内容:
------------------------------------------------------------------------------
0000   00 ff f9 96 4e 7e 08 00 27 fd 8c c3 08 00 45 00  ....N~..'.....E.
0010   00 72 62 61 40 00 40 06 c3 4a 0a 03 00 d4 0a 03  .rba@[email protected]......
0020   00 01 05 f1 05 12 41 ed 4e 88 84 52 f6 25 50 18  ......A.N..R.%P.
0030   19 20 99 2f 00 00 00 4a 00 00 05 00 00 00 00 40  . ./...J.......@
0040   28 44 45 53 43 52 49 50 54 49 4f 4e 3d 28 41 44  (DESCRIPTION=(AD
0050   44 52 45 53 53 3d 28 50 52 4f 54 4f 43 4f 4c 3d  DRESS=(PROTOCOL=
0060   54 43 50 29 28 48 4f 53 54 3d 72 61 63 32 2d 76  TCP)(HOST=rac2-v
0070   69 70 29 28 50 4f 52 54 3d 31 35 32 31 29 29 29  ip)(PORT=1521)))
0080  
-------------------------------------------------------------------------------
   发现其中通服务器发回的连接重定向的不是IP,竟然是主机名,并且名字为rac2-vip,不带域名。由于我的
WINDOWS没有设置默认的DNS SUFFIX,所以这个主机名是没法通过DNS解析得到的,说道这里解决办法也很明显了。
直接修改对应的网卡的DNS SUFFIX为wanmeibi.com 就能解决该问题。2.SCAN 不能负载均衡访问
   解决完上面的问题后又遇到了新的问题。在WINDOWS CMD下面PING RAC-SCAN 每次都只得到地址10.3.0.211,
不会在两个RAC-SCAN IP负载均衡,在LINUX下面测试了一下不存在这样的问题。隐隐约约觉得应该是DNS CACHE的
问题。于是就试着运行 NET STOP DNSCACHE 关闭DNSCACHE, 再次多次PING RAC-SCAN,发现能够实现RAC-SCAN的
多个IP的负载均衡。
总结:
   ORACLE 11G R2 RAC 中的SCAN的出现可以减少因为增删节点或者更改VIP带来的客户程序连接配置的维护工作,
通过SCAN访问数据库大概分为两个阶段:
   (1).通过SCAN访问SCAN LISTENER,SCAN LISTENER 采用ROUD-ROBIN算法返回 多个VIP中的一个给客户程序。
   (2).客户程序通过第一步返回的VIP再次连接数据库。
   ORACLE 正是通过在这种方式实现的各个节点连接的均衡分配。希望对大家有所帮助。