Oracle RAC集群体系结构

一、 Oracle集群体系结构

Oracle RAC,全称是Oracle Real Application
Cluster,即真正的应用集群,是oracle提供的一个并行集群系统,整个集群系统由Oracle Clusterware (集群就绪软件)和 Real
Application Clusters(RAC)两大部分组成。

oracle
RAC的实质是位于不同操作系统的Oracle实例节点同时访问同一个Oracle数据库,每个节点间通过私有网络进行通信,互相监控节点的运行状态,oracle数据库所有的数据文件、联机日志文件、控制文件等均放在集群的共享存储设备上,而共享存储设备可以是RAW、ASM、OCFS2等,所有集群节点可以同时读写共享存储。Oracle
RAC的基本拓扑结构如下所示:

由拓扑结构可知:

一个Oracle Rac数据库有多个服务器节点组成,每个服务器节点上都有自己独立的OS、ClusterWare、oracle
Rac数据库程序等,并且每个节点都有自己的网络监听器。ClusterWare是一个集群软件,主要用于集群系统管理,oracle
Rac数据库程序用于提供oracle实例进程,以供客户端访问集群系统,监听服务主要用于监控自己的网络端口信息,所有的服务和程序通过操作系统都去访问一个共享存储,最终完成数据的读写。共享存储的实现方式有很多种,可以通过使用自动存储管理(ASM)、Oracle集群文件系统(OCFS)、裸设备(Raw)、网络区域存储(NAS)等来保证整个集群系统数据的一致性。

从Oracle10g起,Oracle提供了自己的集群软件,即Oracle clusterware,它通过CRS(即Cluster Ready
Services)来实现,这个软件是安装oracle
rac的前提,也是RAC环境稳定运行的基础,在oracle10g之前的版本,安装RAC时必须借助与第三方的集群软件,而在oracle10g以后,安装oracle
rac时,可以用oracle自带的集群软件,也可以使用经过RAC认证的第三方集群软件来代替。

从oracle的运行机制来说,集群中每台服务器就是一个oracle实例,多个oracle实例对应同一个oracle数据库,组成了oracle数据库集群。请看下图:

从图中可以看出,运行在两个节点上的数据库实例访问同一个RAC数据库,并且两个节点的本地磁盘仅用来存放oracle安装程序和ClusterWare软件,而在共享存储上,存放了oracle的数据文件、控制文件、联机日志文件、归档日志文件等,这是安装oracle
Rac时的一种数据存储分配方式,其实,RAC提供了多种数据存储方式,这个将在下面进行独立介绍。

二、 Oracle Clusterware体系结构与进程介绍

2.1、Oracle Clusterware 简介

Cluster Ready
Services,简称CRS,是oracle开发的一个集群软件,与其它集群软件类似,CRS主要完成集群成员管理、心跳监控、故障切换等功能,CRS要求每个集群节点的操作系统必须相同,这样,通过CRS将多个节点的操作系统绑定到了一起,客户端对集群的访问,就像访问一台服务器一样。

CRS主要有两个集群套件组成,分别是voting disk和Oracle Cluster Registry。

voting
disk,即为表决磁盘,集群中每个节点定期评估自身的健康情况,然后会把它的状态信息放入到表决磁盘上。并且节点间也会互相查看其运行状态,并把信息传递给其他节点进而写入表决磁盘。当集群节点发生故障时,还可以通过表决磁盘进行投票仲裁等,因此,表决磁盘必须放在共享存储设备上。以保证每个节点都能访问到。表决磁盘可以是一个裸磁盘分区,也可以是一个独立的文件。由于它仅记录节点运行信息,磁盘大小一般在10-20M左右即可。

Oracle Cluster
Registry,简称OCR,即集群注册服务,OCR主要用于记录RAC中集群和数据库的配置信息。这些信息包括了集群节点的列表、集群数据库实例到节点的映射以及CRS应用程序资源信息。

CRS使用两种心跳设备来验证节点成员的状态,保证集群的完整性:一个是表决磁盘,集群同步服务进程每隔几秒钟都会向表决磁盘写入一条心跳信息,集群通过表决磁盘即可验证节点的状态,如果某个节点在指定的最大时间段内没有向表决磁盘写入信息,集群就认为此节点失效了,进而执行故障切换。另一个心跳是节点间私有以太网的心跳,通过这个心跳机制可以判断节点间是否出现了网络故障。两种心跳机制的结合,有效的增加了集群的可靠性。

另外,CRS建议用于内部通讯的私有以太网心跳必须与用于RAC节点间通讯的网络分开,也就是不能在同一网络中,如果RAC节点间通讯的网络与私有以太网心跳在同一个网络内,那么,必须保证该网络不能被非集群系统的节点访问到。

2.2、Oracle Clusterware 进程介绍

Oracle Clusterware 通过Cluster Ready
Services来完成集群功能,CRS包含了一组相互协作的后台进程,下面详细介绍下CRS中几个很重要的后台进程。

1Cluster Synchronization Services

简称CSS,用于管理与协调集群中各节点的关系,并用于节点间通信,当节点在加入或离开集群时,都由css进行通知集群。CSS在集群中对应的后台进程为CSSD,该进程由oracle用户运行和管理。当节点发生故障时,cssd会自动重启操作系统。

2Cluster Ready Services

简称CRS,是管理群集内高可用操作的主要程序,在集群中CRS管理所有资源,包括数据库、服务、实例、vip地址、监听器、应用进程等,CRS在集群中对应的后台进程为CRSD,该进程可以对集群资源进行启动、停止、监视和容错等操作,正常状态下,CRSD监控节点各种资源,当某个资源发生异常时,自动重启或者切换该资源。

3Process Monitor Daemon

简称OPROCD,此进程被锁定在内存中,用于监控集群及提供I/O防护(I/O
fencing)。OPROCD运行在每个节点上,且定期执行健康检测,如果在超过它所希望的间隔内,仍然不能和某个节点通信,那么,OPROCD将会重置处理器及重启节点。一个OPROCD故障也将导致Clusterware重启节点。

4Oracle Notification Service

简称ONS,即oracle通告服务,主要用于发布和订阅Fast Application Notification事件。

5Event Management

简称EVM,是一个事件检测的后台进程,由oracle用户运行和管理。

三、 RAC数据库体系机构与进程

3.1、RAC简介

RAC是一个具有共享缓存体系结构的集群数据库,它克服了传统的不共享和共享磁盘方法的限制,为所有业务应用程序提供了一种具有可伸缩性和可用性的数据库解决方案,它一般与Oracle
Clusterware 或第三方集群软件共同组成Oracle集群系统。

RAC是一个全共享式的体系架构,它的所有数据文件、控制文件、联机日志文件、参数文件等都必须存放在共享磁盘中,因为只有这样,集群所有节点才能访问到,RAC支持多种存储方式,可以使用下面几种方式的任意一种:

(1)裸设备(Raw devices)

也就是不经过文件系统,将数据直接写入磁盘中,这种方式的好处是磁盘I/O性能很高,适合写操作频繁的业务系统,但缺点也很明显:数据维护和备份不方便,备份只能通过dd命令或者基于块级别的备份设备来完成,这无疑增加了维护成本。

(2)集群文件系统

为了支持共享存储,oracle开发出了集群文件系统OCFS,这个文件系统可用于Windows、Linux和Solaris,现在已经发展到了OCFS2,通过OCFS2文件系统,多个集群节点可以同时读写一个磁盘而不破坏数据,但对于大量读写的业务系统,性能不是很高。另外,oracle
RAC也支持第三方的集群文件系统,例如Redhat的GFS等。

(3)网络文件系统(NFS)

(4)Automated Storage Management

Automated Storage
Management,简称ASM,是Oracle推荐的共享数据存储方式,它是Oracle数据库10g包含的一个特性。ASM其实就是RAW方式存储数据,但是加入了数据管理功能,它通过将数据直接写入磁盘,避免了经过文件系统而产生的I/O消耗。因而,使用ASM可以很方便地管理共享数据,并提供异步I/O的性能。ASM还可以通过分配I/O负载来优化性能,免除了手动调整I/O的需要。

3.2、Oracle RAC的特点

通过RAC数据库,可以构建一个高性能、高可靠的数据库集群系统,RAC的优势在于:

(1)可以实现多个节点间的负载均衡

RAC数据库集群可以根据设定的调度策略,在集群节点间实现负载均衡,因此,RAC数据库每个节点都是工作的,同时也处于互相监控状态,当某个节点出现故障时,RAC集群自动将失败节点从集群隔离,并将失败节点的请求自动转移到其它健康节点上,从而实现服务透明切换。

(2)可以提供高可用服务

这个是Oracle
Clusterware实现的功能,通过CRS可以实现节点状态监控,故障透明转移,这保证了oracle数据库可以对外不间断的提供服务。

(3)通过横向扩展提高了并发连接数

RAC这个优点非常适合大型的联机事务系统中。

(4)通过并行执行技术提高了事务响应时间

这个是RAC集群的一大优势,通常用于数据分享系统中。

(5)具有很好的扩展性

在集群系统不能满足繁忙的业务系统时,RAC数据库可以很方便的添加集群节点,且可以在线完成节点的添加,并自动加入集群系统,不存在宕机时间;同时在不需要某个集群节点时,删除节点也非常简单。

RAC数据库也有一定的缺点:

(1)与单机数据库相比,管理维护更复杂,并对维护人员要求更高

(2)底层规划设计不好时,系统整体性能会较差,甚至不如单机系统的性能。所以,如果对RAC数据库不是很了解,不建议马上在生产环境中使用。

(3)由于RAC集群系统需要多个节点,那么需要购买多台服务器,同时需要oracle企业级版本数据库,这无形中也增加了软硬件成本。

3.3、RAC进程管理

RAC数据库是由多个节点构成的,每个节点就是一个数据库实例,而每个实例都有自己的后台进程和内存结构,并且在RAC集群中,每个实例的后台进程和内存结构都是相同的,从整体上看起来,就像是一个单一数据库的镜像,但是,RAC数据库在结构上与单实例库也有不同之处:

(1)RAC数据库的每个实例至少拥有一个额外的重做线程(redo thread)

(2)RAC数据库的每个实例都拥有自己的撤消表空间(undo tablespace)

很显然,这种机制是每个实例独立的使用自己的重做线程和撤消表空间,各自锁定自己修改的数据。
 RAC的这种设计方式,把多个实例的操作相对独立的分开。那么RAC数据库如何实现节点数据的一致性呢,其实每个RAC实例的SGA内有一个buffer
cache(缓冲区),通过Cache
Fusion(缓存融合)技术,RAC在各个节点之间同步SGA中的缓存信息,从而保证了节点数据的一致性,同时也提高了集群的访问速度。

RAC数据库最大的特点是共享,那么如何实现多个节点有条不紊的数据共享呢,这就是要说的RAC的两个进程:即Global Cache Service
(GCS) 和 the Global Enqueue Service (GES)

全局缓存服务(GCS)和全局队列服务(GES)是最基本的RAC进程,主要用于协调对共享数据库和数据库内的共享资源的同时访问。同时,GES和GCS通过使用全局资源目录(Global
Resource
Directory,GRD)来记录和维护每个数据文件的状态信息,而GRD保存在内存中,内容分布存储在所有实例上。每个实例都管理部分内容。

RAC中通过几个特别的进程与GRD相结合,使得RAC可以使用缓存融合技术,这几个特别进程是:

?Global Cache Service Processes(LMSn)

LMS进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE中传输块镜像。

?Global Enqueue Service Monitor(LMON)

LMON主要监视群集内的全局资源和集群间的资源交互,并管理实例和处理异常,以及集群队列的恢复操作。

?Global Enqueue Service Daemon(LMD)

LMD进程主要管理对全局队列和全局资源的访问,并更新相应队列的状态,处理来自于其他实例的资源请求。

?Lock Processes(LCK)

LCK进程主要用来管理实例间资源请求和跨实例调用操作,并管理除Cache Fusion以外的资源请求,比如library和row
cache的请求等。

?Diagnosability Daemon(DIAG)

DIAG进程主要用来捕获实例中失败进程的诊断信息,并生成相应的TRACE文件。

3.4、RAC数据库存储规划

安装RAC数据库时涉及到的软件有Oracle Clusterware、Oracle Rac数据库软件,同时还涉及到voting
disk、OCR等,关于每部分需要占用磁盘空间大小如下:

在了解了RAC每部分所需的磁盘空间大小后,就可以根据每部分的用途来规划数据存储了。RAC广泛支持各种数据存储方式,例如单一日志文件系统ext2/ext3、集群文件系统OCFS2/GFS、网络文件系统NFS、裸设备RAW、自动存储管理ASM等,下表列出了可以使用的存储类型:

具体使用哪种存储策略,要根据安装RAC环境的不同而不同。这里推荐三种常用的存储方式:

Oracle RAC集群体系结构

时间: 2024-10-25 16:04:51

Oracle RAC集群体系结构的相关文章

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

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

【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 集群 SCAN 说明

1   SCAN 概述 之前有网友在我Blog 留言说我的RAC 搭建中没有写SCAN 配置,这个之前应该是有写过,但刚搜了一下,没找到,正好重新整理一下,并做下实验,实验就用Oracle 12c 进行测试. 在Oracle 11g 之前,我们去连接RAC 集群,都是配置如下的内容: dave_rac= (DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE = yes) (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOS

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 可以消除数据库服务器单点故障问题,从而为客户提供优秀的数据库可用性.在集群服务器环境中,数据库本身在服务器