ALLSTARS_ORACLE 发表于 2013-11-17 20:30:48

11gR2 集群(CRS/GRID)新功能—— SCAN(Single Client Access Name)

11gR2 集群(CRS/GRID)新功能—— SCAN(Single Client Access Name)


回顾
-------------------
本文简单的介绍一下11gR2集群(CRS/GRID)新功能SCAN(Single Client Access Name),希望对于刚刚接触11gR2的朋友有一些帮助。

在介绍SCAN之前,先简单的回顾一下oracle关于IP地址的使用,在9i RAC时,oracle没有自己的clusterware,主要依靠第三方的集群软件(如IBM HACMP等等),客户端主要是通过public IP来访问数据库(如果第三方集群软件提供服动IP的话,也可以通过这个服动IP来访问数据库),当某一个节点已经出现故障无法对外提供服务时,如果客户端继续请求连接这个节点的public IP,那么连接请求会长时间没有返回,最后要等到TCP-IP timeout (TCP-IP超时时间一般为10分钟,不同OS这个值不同)才会返回一个超时信息,这对于实时性要求较高的应用来说是致命的问题,很多DBA都经历过这样的问题,从技术层面上来说,这是一个网络层的问题,任何应用都要等待网络层返回超时信息。为了解决这个问题,从oracle 10g
RAC开始,引入了一个新的功能叫VIP,这个功能类似于第三方集群软件的浮动IP,简单的说就是当public 网卡或者节点出现问题,VIP可以快速的failover到另外的节点,如果客户端的连接请求被分配到这个VIP时,客户端连接请求马上就会遇到错误,因此会快速的跳过这个‘有问题的’VIP,而重新分配另一个VIP(这个功能是客户端连接时的failover),最终连接到数据库,这些对于应用来说是透明的,基本感觉不到连接的延时。

SCAN简介
-------------------
从11gR2 Grid Infrastructure (CRS/clusterware)开始,引入了一个新功能叫SCAN (Single Client Access Name),SCAN是一个域名,可以解析至少1个IP,最多解析3个SCAN IP,客户端可以通过这个SCAN 名字来访问数据库,SCAN的好处就是当集群中新增加了节点或者删除了节点,不需要额外维护客户端。在11gR2上,客户端仍然可以继续使用原有的 VIP,但是oracle推荐使用SCAN。

SCAN ip必须与public ip和VIP在一个子网,同时oracle推荐使用DNS或者GNS(11gR2
新功能)来解析SCAN,如果没有使用DNS或者GNS的话,可以使用hosts文件,但是这个办法不是oracle推荐的,因为这个方法只能定义一个 SCAN IP。

GRID集群中有2类资源是与SCAN有关的,一类是SCAN IP,另一类是SCAN Listener,SCAN IP和SCAN Listener是成对出现的,也就是说如果有3个SCAN IP,就会同时有3个SCAN Listene。SCAN IP就是DNS解析的IP地址,SCAN Listener的作用是接受客户端的连接请求。查看SCAN IP信息和SCAN Listener信息的方法在下文介绍。

数据库的初始化参数remote_listener默认被设置为SCAN Listener,目的是为了让SCAN Listener可以监听所有的实例,记录所有实例的压力,以便于按照负载均衡的方式来转发客户端的请求。

客户端如何通过SCAN访问数据库
------------------------------------------------------
客户端发出连接数据库的请求,DNS将SCAN解析出对应的3个SCAN IP并返回给客户端,
客户端随机的选择其中一个SCAN IP地址,然后客户端通过这个SCAN IP访问对应的节点,当对应节点的SCAN Listener接受到请求后,SCAN Listener会选择压力最小的数据库实例,然后压力最小的数据库实例对应的local listener的地址将会返回给客户端,最终这个local listener为客户端请求建立与数据库的连接。

客户端tnsnames.ora的配置
-------------------------------------------
RAC =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-cluster-scan)(PORT = 1521))
  (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = rac)
  ) )

客户端的连接方式:
$ sqlplsu <username>/<password>@RAC

EZconnet的连接仍然适用于SCAN
$ sqlplus <username>/<password>@rac-cluster-scan:1521/rac

常用命令
-----------------------
1. 查看SCAN配置信息
$ srvctl config scan
SCAN name: rac-cluster-scan, Network: 1/192.168.1.0/255.255.255.0/
SCAN VIP name: scan1, IP: /rac-cluster-scan/192.168.1.12
SCAN VIP name: scan2, IP: /rac-cluster-scan/192.168.1.13
SCAN VIP name: scan3, IP: /rac-cluster-scan/192.168.1.14

2. 查看SCAN Listener配置信息
$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521

3. 查看SCAN的状态
$ srvctl status scan

4. 查看SCAN listener的状态
$ srvctl status scan_listener

常用文档
------------------
SCAN介绍
www.oracle.com/technetwork/testcontent/scan-098460.html

ORACLE SUPPORT网站上查看下面2篇文章,都是关于SCAN的介绍,希望能够帮助您解决关于SCAN的问题。
11gR2 Grid Infrastructure Single Client Access Name (SCAN) Explained (Doc ID 887522.1)
How to Setup SCAN Listener and Client for TAF and Load Balancing (Doc ID 1188736.1)

同时推荐您学习oracle的在线文档,里面有很详细的介绍,包括新功能,CRS/RAC 安装过程和常用的管理命令,基本上可以解决我们平时遇到的大部分疑问。

集群(GRID/CRS)的安装和管理文档:
http://docs.oracle.com/cd/E11882_01/install.112/e22489/toc.htm
http://docs.oracle.com/cd/E11882_01/rac.112/e16794/toc.htm

RAC的安装和管理文档:
http://docs.oracle.com/cd/E11882_01/install.112/e24660/toc.htm
http://docs.oracle.com/cd/E11882_01/rac.112/e16795/toc.htm

yuhuacanhong 发表于 2013-11-18 21:19:03

沙发啊 支持一个。。。

bin_huhj 发表于 2014-2-11 11:27:48

我最近安装的一个两节点的11.2.0.4 RAC,通过/etc/hosts配置的scan,没有使用dns,只配置了一个scan ip地址。客户端通过scan ip连接后,不能实现负载均衡。不管有多少个客户端连接总是一直是连接在scan vip所在的节点上。
不能实现负载均衡,请问会是哪里的配置出现了问题?
页: [1]
查看完整版本: 11gR2 集群(CRS/GRID)新功能—— SCAN(Single Client Access Name)