重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1541|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2022-7-17 18:39:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在介绍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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-9-28 10:16 , Processed in 0.103897 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表