Oracle RAC是一个集群数据库,可以实现负载均衡和故障无缝切换。如何知道RAC数据库已经实现了这些功能呢,下面对此进行功能测试。
  1、 负载均衡测试
  RAC数据库的负载均衡是指对数据库连接的负载均衡,当一个新的会话连接到RAC数据库时,通过指定的分配算法将请求分配到集群的任一节点上,这是RAC数据库完成的功能。负载均衡在RAC中分为两种:一种是基于客户端连接的负载均衡;一种是基于服务器端的负载均衡。
  1. RAC客户端负载均衡
  客户端连接的负载均衡配置起来非常简单,与RAC数据库的实例负载和监听没有任何关系,因此也不需要在集群节点进行任何设置,只要在客户端机器上的tnsnames.ora文件中添加负载均衡策略配置即可。这里以Linux客户端为例进行介绍。
  (1) 修改/etc/hosts文件
  编辑/etc/hosts文件,将RAC数据库相关的IP地址信息添加进去,例如:
  192.168.12.231          node-rac1
  192.168.12.232          node-rac2
  192.168.12.230          node-vip1
  192.168.12.240          node-vip2
  (2) 查看RAC数据库的service_names
  [oracle@node-rac1 ~]$ sqlplus "/as sysdba"
  SQL*Plus: Release 11.1.0.6.0 - Production on Sun Sep 12 22:05:53 2010
  Copyright (c) 1982, 2007, Oracle.  All rights reserved.
  Connected to:
  Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
  With the Partitioning, Real Application Clusters, OLAP, Data Mining
  and Real Application Testing options
  NAME           TYPE        VALUE
  ---------------------- --------------     -------------
  service_names    string        racdb
  这里需要说明的是,在配置RAC负载均衡时,客户端连接的是RAC数据库的服务名,而不是实例名,也是SERVICE_NAME必须设置为“SERVICE_NAME = racdb”
  (3) 修改Oracle客户端的配置文件tnsnames.ora
RACDB=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = node-vip2)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = node-vip1)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
  这个配置文件的说明如下:
  LOAD_BALANCE = yes,表示启用连接负载均衡。在默认情况下“LOAD_BALANCE = no”,因此如果要配置负载均衡,必须添加设置“LOAD_BALANCE = yes”。启用负载均衡后,SQLNet会随机选择ADDRESS_LIST列表中的任意一个监听,然后将请求分发到此监听上,通过这种方式完成负载均衡。如果“LOAD_BALANCE = no”,那么SQLNet会按照ADDRESS_LIST列表中的顺序选择监听,只要这个监听正常一直使用该监听。
  SERVICE_NAME = racdb,这个“racdb“是RAC数据库的服务名,而非实例名。