Oracle RAC 集群 SCAN 说明

1   SCAN 概述

之前有网友在我Blog 留言说我的RAC 搭建中没有写SCAN 配置,这个之前应该是有写过,但刚搜了一下,没找到,正好重新整理一下,并做下实验,实验就用Oracle 12c 进行测试。

在Oracle 11g 之前,我们去连接RAC 集群,都是配置如下的内容:

dave_rac=

(DESCRIPTION =

(ADDRESS_LIST =

(LOAD_BALANCE = yes)

(FAILOVER=ON)

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.68)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.69)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = dave)

(failover_mode=(type=select)(method=basic))

)

)

这里的68和69 是VIP 的地址,是PUBLIC 网卡上的虚拟IP。 那我们这里只有2个节点,如果我们增加了RAC的集群数,那么就需要修改所有的客户端的配置,这个就很麻烦。

所以在Oracle 11gR2 中,引入了SCAN(Single ClientAccess Name)的特性。SCAN是一个域名,可以解析至少1个IP,最多解析3个SCAN IP,客户端可以通过这个SCAN 名字来访问数据库,另外SCAN ip必须与public ip和VIP在一个子网。

启用SCAN 之后,会在数据库与客户端之间,添加了一层虚拟的服务层,就是SCAN IP和SCAN IP Listener,在客户端仅需要配置SCAN IP的tns信息,通过SCANIP Listener,连接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的操作,均不会对客户端产生影响,也就不需要修改配置。

配置SCAN有3种方法:

1.  使用/etc/hosts文件

这个是我们目前用的最多的方式,但是缺点只能对应一个SCAN IP,该方法Oracle 不推荐,但是简单,不需要单独的DNS 服务器,使用该方法,客户端还是需要VIP来链接。 Oracle 推荐使用其他的2种方法来实现SCAN 功能。

2.  在DNS中定义域名,只需要在DNS中配置即可实现SCAN 功能。

3.  通过Grid Naming Server(GNS),需要配置DNS 和DHCP才能实现SCAN 功能。

配置好之后,直接在客户端的tnsnames里写SCAN NAME就可以了,如下:

RACSCAN =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan.gns.cndba.com)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dave)

)

)

以后RAC 增加删除节点,客户端都不需要修改。

2   SCAN 工作流程

在启用SCAN 特性之后,除了多几个SCAN IP 之外,还会多几个SCAN IP Listener,每个SCAN IP对应一个SCAN IP Listener,为了性能考虑,每个SCAN IP以及其对应的SCAN IP Listener将被独立的分配到各个节点上。

如果Cluster中其中某个运行SCAN IP的节点出现异常,则其余正常的SCAN IP节点将自动接管。

如果客户端是11g R2的版本,则客户端只需在tns中配置域名解析,即可实现failover,如果客户端版本低于11g R2,则无法通过域名解析出多个SCAN IP地址,因此如果要实现failover,必须在客户端的tns中配置3个SCAN IP的地址进行解析,这也是为何Oracle强烈建议在使用11g R2数据库时,客户端也最好使用11g R2的原因。

上图是SCAN 的工作流程图,图的右边是一个4个节点的RAC 集群,所以有4个Local Listener。 配置了3个SCAN IP和3个 SCAN Listeners。这3个SCAN IP 是随机的落在RAC节点上。

客户端链接的时候,会随机的连接到某一个某一个SCAN IP及起对应的SCAN IP Listner上, SCAN IP Listener接收到连接请求时,会根据 LBA 算法(least loaded instance),将该客户端的连接请求,转发给对应的Instance上的VIP Listener,从而完成了整个客户端与服务器的连接过程。

简单点就是:

client -> scan listener -> locallistener -> local instance

3   SCAN 相关的几个名词说明

3.1             SCAN VIP

SCAN VIP,即SCAN IP,是由DNS或者GNS、hosts解析出来的IP地址。目前SCANVIP最多能有三个,它们循环地被客户端所请求到。

SCAN VIP数量和节点数没有关系,正如上图所示,4个节点,3个SCAN VIP,SCAN VIP是随机的落在哪个节点上的,这个过程也是动态变化的。

3.2             GNS VIP

GNS VIP同SCAN VIP, GNS VIP是提供GNS服务的IP地址,它绑定到某个节点的PUBLIC IP所在网卡上,当节点出现故障,GNS资源会自动切换到其他正常的节点继续提供GNS解析服务。如果我们不使用GNS解析方法,那么也不会存在GNS VIP。

3.3             SCAN LISTENER

SCAN监听器,实现SCAN的负载均衡功能。如果RAC上有三个SCAN VIP,那么SCAN监听器也有三个,它们各自监听SCAN VIP的连接请求。

SCAN监听器的注册是由REMOTE_LISTENER参数控制的,任何实例都会向所有的SCAN监听器注册,所以SCAN LISTENER 会包含所有实例的名称。

这样SCAN监听器可以实时了解所有实例的运行情况的,因此能够准确地将连接重定向到空闲服务器的本地监听器上。

SCAN监听器是跟着SCAN VIP随机分配到节点服务器上,如果某个节点发生故障,运行在此节点上的SCANVIP会进行漂移,这时候SCAN监听器也跟着漂移到正常的节点上,继续为SCAN VIP监听连接请求,当PMON进程下次动态更新实例信息到该SCAN监听器之后,它又重新接受客户端的连接。

3.4             REMOTE_LISTENER

Oracle 参数,设置该参数之后,任何实例都会向SCAN监听器注册,所以SCAN监听器能够负载均衡地分发连接请求到节点本地监听器上。

因为SCAN IP有多个,他们对应的是同一个域名,因此在数据库中,需要使用easyconnect naming method方式,需要修改sqlnet.ora的配置文件添加ezconnect,如:

NAMES.DIRECTORY_PATH=(tnsnames,ezconnect)。

设置格式:REMOTE_LISTENER=SCAN:PORT,如REMOTE_LISTENER=rac-scan.cndba.cn:1521。

配置之后,RAC数据库的每个节点的PMON进程,会用广播的方式向每个SCAN Listener进行注册,同时CRS的后台进程ONS,会采集各个节点的负载状况,通知SCAN Listener,以便SCAN Listener根据负载情况,将新连接分配到当前负载最低的节点上。

管理理论部分,就这么多,接下来,会整理2篇Oracle 12c 环境下使用DNS和GNS 实现SCAN 的Blog,具体的了解下如何实现这种功能。

参考:

Grid Infrastructure Single ClientAccess Name (SCAN) Explained (文档 ID 887522.1)

--------------------------------------------------------------------------------------------

版权所有,文章禁止转载,否则追究法律责任!

AboutDave:

--------------------------------------------------------------------------------------------

QQ:     251097186

Email:    [email protected]

Blog:    http://blog.csdn.net/tianlesoftware

Weibo:    http://weibo.com/tianlesoftware

Twitter:  http://twitter.com/tianlesoftware

Facebook: http://www.facebook.com/tianlesoftware

Linkedin: http://cn.linkedin.com/in/tianlesoftware

Dave 的QQ群:

--------------------------------------------------------------------------------------------

注意:加群必须注明表空间和数据文件关系 | 不要重复加群

CNDBA_1: 62697850 (空)    CNDBA_2: 62697716 (满)   CNDBA_3: 283816689

CNDBA_4: 391125754   CNDBA_5: 104207940    CNDBA_6: 62697977   CNDBA_7: 142216823(满)

时间: 2024-08-11 00:23:45

Oracle RAC 集群 SCAN 说明的相关文章

Oracle RAC集群安装之:Grid软件安装过程蓝屏

前几天在安装一套RAC服务器的过程中,遇到了蓝屏事件,折腾了蛮久(在排查是否存在硬件问题上花费了相当多一部分时间),整个过程大概说明如下: 1.两台华为的PC SERVER,操作系统为WIN SERVER 2008 R2,装11.2.0.3的Oracle集群. 2.第一次安装到准备在第二节点进行GRID安装的步骤时,安装操作所在的节点1蓝屏自动重启了. 3.重启节点1每次都会在出现登陆界面前一刻发生蓝屏. 4.集成部门的同事查看两台服务器的面板,发现蓝屏的服务器在面板上有些指示灯不亮,怀疑是服务

Oracle RAC集群体系结构

一. Oracle集群体系结构 Oracle RAC,全称是Oracle Real Application Cluster,即真正的应用集群,是oracle提供的一个并行集群系统,整个集群系统由Oracle Clusterware (集群就绪软件)和 Real Application Clusters(RAC)两大部分组成. oracle RAC的实质是位于不同操作系统的Oracle实例节点同时访问同一个Oracle数据库,每个节点间通过私有网络进行通信,互相监控节点的运行状态,oracle数据

【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)

Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体系的总结,一则进行回顾复习,另则便于查询使用.本图文文档亦源于此.阅读Oracle RAC安装与使用教程前,笔者先对这篇文章整体构思和形成进行梳理.由于阅读者知识储备层次不同,我将从Oracle RAC安装前的准备与规划开始进行整体介绍安装部署Oracle RAC.始于唐博士指导,对数据库集群进行

Oracle rac集群环境中的特殊问题

备注:本文摘抄于张晓明<大话Oracle RAC:集群 高可用性 备份与恢复> 因为集群环境需要多个计算机协同工作,要达到理想状态,必须要考虑在集群环境下面临的新挑战. 1.并发控制 在集群环境中,关键数据通常是并发存放的,比如放在共享磁盘上.而集群内各个成员的生身份是对等的,所有节点对数据有相同的访问权利.这时就必须有某种机制能够控制节点对数据的访问. 在Oracle rac中,是利用DLM (Distribute Look Management)机制来进行多个实例间的并发控制. 2.健忘症

Oracle RAC集群本地时间和远程时间不一致?

事因: 征信数据库数据事件不一致导致数据(RAC集群)混乱,PLSQL查询时间和数据库时间不一致,严重影响业务.因为之前只是偶遇一次,再加上有过MySQL时区解决经验,感觉应该可以很快解决,然而,并非我想的那么简单.如下是整个事件的经过,算是经验分享吧.(有vsp,因此只能截图) 1.查看两台服务器的本地时间,以及时区. 可以看到,Asia/Shanghai CST 北京时间东八区.(GMT代表格林尼治标准时间) 2.用sysdba查看本地时间: AM表示上午,PM表示下午.没有什么异常. 2.

Oracle RAC集群安装

安装企业版Oracle数据库需要安装两部分:Oracle RAC, Oracle Database. Oracle RAC原理请参考这篇文章.本篇原创介绍的是RAC 安装的实操部分,数据库的安装部分请参考这篇文章. 以Oracle 12C为例. Oracle官方网站下载grid 安装包: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle12c-linux-12201-3608234.htm

ORACLE RAC集群原理

ORACLE RAC原理:在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需 要一个共享存储设备.同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件.同时所有服务器上的OS都应该是同一类OS, 根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处 理也可能会发送给另外一台服务器的RAC组件处理,

oracle rac集群的东西

[主任]北京--雨过天晴(406500225) 2015-07-14 16:14:57 [主任]北京--雨过天晴(406500225) 2015-07-14 16:15:04这个东西谁能看懂?[主任]北京--雨过天晴(406500225) 2015-07-14 16:17:14@襄阳-小雨 是不是能在这个存储里虚拟一台机器?[主任]北京--雨过天晴(406500225) 2015-07-14 16:43:16服务器宕机了[主任]北京--雨过天晴(406500225) 2015-07-14 16:

【赵强老师】Oracle RAC集群的概念

一.什么是Oracle RAC(Real Application Cluster)? Oracle RAC 是一个具有共享缓存架构的集群数据库,它克服了传统的无共享方法和共享磁盘方法的限制,为您的所有业务应用提供了一种具有高度可扩展性和可用性的数据库解决方案.Oracle RAC 是 Oracle 私有云架构的关键组成部分. Oracle Real Application Clusters 可以消除数据库服务器单点故障问题,从而为客户提供优秀的数据库可用性.在集群服务器环境中,数据库本身在服务器