Oracle 11g R2中,引入了SCAN(Single Client Access Name)的特性。该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的SCAN IP以及SCAN IP Listener,在客户端仅需要配置SCAN IP的tns信息,通过SCAN IP Listener,连接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的操作,均不会对Client产生影响。
客户端通过scan IP连接数据库实例的过程是:client -> scan listener -> local listener -> local instance
使用scan有2种方式:
1、在DNS中定义域名。
2、通过Oracle提供的Grid Naming Server(GNS)实现DHCP自定义。
如果不想使用上面2种方法,可以修改2台服务器的hosts文件,把scan-cluster.localdomain 172.16.0.75添加进去。这种方法是oracle不推荐的,因为这个方法只能定义一个 SCAN IP。
负载均衡方面:
在服务端,remote_listener默认会被设置为SCAN Listener
在客户端,tnsnames.ora的配置如下:
RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan-cluster.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
) )
客户端的连接方式
$ sqlplsu /@RAC
EZconnet的连接仍然适用于SCAN
$ sqlplus /@scan-cluster.localdomain:1521/rac
查看集群负载情况: > select inst_id,count(*) from gv$session group by inst_id;
查看用户在哪个节点 > select instance_name from v$instance;