本文参考链接:https://blogs.oracle.com/ 回顾 ------------------- 本文简单的介绍一下11gr2集群(crs/grid)新功能scan(single client access name),希望对于刚刚接触11gr2的朋友有一些帮助。 在介绍scan之前,先简单的回顾一下oracle关于ip地址的使用,在9
本文参考链接:https://blogs.oracle.com/
回顾
-------------------
本文简单的介绍一下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 /@rac
ezconnet的连接仍然适用于scan
$ sqlplus /@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 [video] (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
----jialin.lee
2012-01-18