迅闻网
让更多人看到你

oracle rac原理(oracle rac双机集群)

oraclerac原理

单点数据库VSRAC
单节点数据库,假如实例宕机了,假如一个业务链接在实例上面,那么这个业务就中断了。这个时候体系就不具有可用性了,那么这个时候单节点的可用性是很差的。
关于RAC来说,和单实例一样,仍是一份数据文件,都是相同的存储上面放着oracle的文件,可是是由三个实例共用同一份数据文件。这样的优点是在三个实例之间做了冗余,在上面三个实例傍边恣意两个坏了业务都能够链接到剩下的一个实例,都能够正常的工作。RAC供给了在实例级别的冗余。
RAC不能够解决在数据的安全,虽然有多个实例,可是只要一份数据文件,这样只需数据文件损坏了,那么整个数据库就损坏了。
什么是RAC
一般每个实例都放在不同的服务器上面,这样能够起到冗余效果。一切的数据库文件都放在同享存储上面,可是还有一些文件放在每个实例自己的本地的磁盘上面,比如参数文件,每一个实例都能够有自己的参数文件,这个参数文件既能够放在本地也能够放在同享存储上面,多个实例都运用同一个参数文件。
在RAC里边,最重要的便是实例和实例之间的交互,即使是别离的实例,可是读取的数据是相同的,RAC不是分布式的体系,由于它只要一个存储,分布式体系是指数据发布在不同的数据库上面,然后经过中间件来和谐做查询。RAC仍是一台数据库,多个实例。
RAC架构
关于RAC来说至少有两套物理上不同的网络,私有网络是专门用来实例之间的数据交互。假如私有网络,一切的数据都在一个网络下面,那么那么就会对数据造成影响,严重的影响RAC的功能了。实例之间数据之间传递运用私有网络和对外服务供给的网络之间是物理分开的。所以RAC至少有两套网络,一个是实例之间的数据的传递,别的一个是公有网络,是对外供给服务的,外面的业务是供给公有网络的IP链接到数据库的。
RAC的特色
除了具有一般的数据库特性外:
每一个节点的instance都有自己的SGA
每一个节点的instance都有自己的backgroundprocess
每一个节点的instance都有自己的redologs
每一个节点的instance都有自己的undo表空间
每一个节点的实例都有自己的SGA,可是之间在SGA里边的数据块都是需求相互传递的。
每一个节点都有自己的redo,redo不是共用的。虽然redo是放在同享磁盘上面,可是每个实例都有自己的redo,各有各的。当实例2坏了,实例1做康复的时候能够经过实例2的redo信息来进行康复。
每个实例都要处理自己的一套业务,所以需求运用自己的UNDO。
所以在RAC架构下面,每一套实例都有自己的东西。
RAC如何容错的
运用SAN存储,存储和服务器就不在一起了,而是和服务器别离了,是一个网络的存储体系,服务器是服务器,存储是存储,彻底别离的。
当节点1坏了,不仅仅仅仅将业务切换到节点2,这个时候还要处理节点1坏了遗留下来的问题。首要是一些提交和未提交的业务。比如实例1坏了,实例2就要从实例1的redo里边读最终一次checkpoint之后的信息,便是实例1最终将一切的数据写到磁盘之后产生的一切的redo运用,该回滚的回滚,该康复的康复。即现将以提交和未提交的业务产生的redo都先运用,由于是最终一次checkpoint之后的信息,之前的信息是现已写到磁盘上面了,所谓的康复是将未写到磁盘上面的信息进行康复。(虽然实例坏了,可是实例的redo并没有坏,放置在同享存储上面,它的redo仍是答应其他实例拜访的)实例2读取实例1的redo,然后悉数运用一遍,之后再回滚未提交的业务修正的数据块,这个有点像实例的康复。
RACBackgroundProcesses
这儿边会比单实例环境下面的实例多出几个进程。多出来的进程就用来确保在rac环境下面rac之间交流需求做的比如锁,资源交流之间的操控。
RAC相关的后台进程
LMS-GobalCacheServiceProcess大局缓存服务进程
LMS进程是在RAC环境下面最重要的一个进程,是处理大局的缓存,所谓的缓存便是数据库一个实例到别的一个实例数据的交流进程。
LMD-GlobalEnqueueServiceDaemon大局查询服务看护进程
LMON-GlobalEnqueueServiceMonitor大局查询服务监视进程
LCK0-InstanceEnqueueProcess实例查询进程
DIAG(DiagnosticDaemon)诊断看护进程
RAC后台进程
LMON–LockMonitorProcesses
监控整个集群情况,保护GCS的内存结构。
处理非正常停止的进程和实例。
当实例脱离和加入集群时,锁和资源的重新装备。
办理大局的锁和资源。
监控大局的锁资源,处理死锁和阻塞。
也被称为Globalenqueueservicemonitor
LMSn–LockMonitorServices
LMS进程首要用来办理集群内数据块的拜访,并在不同实例的BUFFERCACHE
中传输块镜像。
当在某个数据块上产生一致性读时,LMS负责回滚该数据块,并将它copy到恳求的实例上。
每个RAC节点至少有2个LMS进程。也称作GCS(GlobalCacheServices)processes.
LCK–LockProcess
LCK进程首要用来办理实例间资源恳求和跨实例调用操作,调用操作包含数据字典等目标的拜访;并处理非CACEHFUSION的CHACE资源恳求(例如:DICTIONARYCACHE或rowcache的恳求)由于LMS进程负责首要的锁办理功能,所以每个实例只要一个LCK进程。
能够看到有这么多的进程都和锁有关系,归根到底便是一个数据块从一个实例到别的一个实例,保护一致性的根据便是锁。只要经过锁才能够保护数据块在两个实例之间的一致性。
LMD–LockMonitorDaemonProcess
LMD进程首要办理对大局行列和资源的拜访,并更新相应行列的状况,处理来
自于其他实例的资源恳求。
每一个大局行列的当时状况存储在相应的实例同享内存中,该状况标明该实例
具有相应的权力运用该资源。
一个实例(master)的同享内存中存在一个特别的行列,该行列纪录来自其他远
程实例的资源恳求,当长途实例的LMD进程宣布一个资源恳求时,该恳求指向
master实例的LMD,当master实例的LMD进程遭到该恳求后,在同享内存中的
特别行列中监测该资源是否无效,假如有效则LMD进程更新该资源对列的状况
,并告诉恳求资源的LMD进程该资源行列能够运用了,假如资源行列正在被其
他实例运用或许当时无效,则LMD进程告诉正在运用中的实例的LMD进程应该
开释该资源,等资源开释变得有效时,MASTER实例的LMD进程更新该资源队
列的状况并告诉恳求资源实例的LMD进程该资源行列能够运用了。
DIAG(DiagnosticDaemon)
Oracle10g新的后台进程。
例行对实例的健康情况进行监控,同时也监控实例是否挂起或许呈现死锁。
搜集实例和进程犯错时的关键诊断信息。
这个进程会更新alert日志文件,写入一些重要告警信息。
上面这些都是RAC下面实例多出的进程,下面便是RAC自己的进程了。
RAC的服务进程
独立的服务CRS
CRS-集群资源服务
CSS-集群同步服务
EVMD事情办理服务
ONS–事情的发布及订阅服务
用来和谐两个实例之间来拜访存储,这个架构便是CRS。在RAC下面由于要对大局资源进行操控,所以实例不能直接拜访存储,必须经过CRS层来拜访。(RAC指的是架构,详细是由CRS这套服务来实现的,这套服务里边有上面的四个服务组成)。
CRS–ClusterReadyServices
办理集群内高可用操作的根本程序。
CRS办理的任何事物被称之为资源
数据库、实例、监听、虚拟IP(VIP)地址、运用进程等等
CRS是根据存储于OCR中的资源装备信息来办理这些资源
当一资源的状况改动时,CRS进程生成一个事情。
CSS–ClusterSynchronizationService
办理集群节点的成员资格
操控哪个结点为集群的成员、结点在加入或脱离集群时告诉集群成员来操控
集群的装备信息
此进程产生毛病导致集群重启
EVM–EventManagement
事情办理看护进程。
发布CRS创建事情的后台进程
ONS–OracleNotificationService
通讯的快速运用告诉事情的发布及订阅服务oracle rac

Oracle集群体系结构

OracleRAC,全称是OracleRealApplicationCluster,即正真的运用集群,是Oracle供给的一个并行集群体系,整个集群体系由OracleClusterware(集群安排妥当软件)和RealAplication(RAC)两大部分组成。
OracleRAC的本质是坐落不同的操作体系的Oracle实例节点同时拜访拜访同一个Oracle数据库,每个节点间能够经过私有网络进行通讯,相互监控节点的运行状况,Oracle数据库一切的数据文件,联机日志文件,操控文件等均放在集群的同享设备上面,而同享设备能够是RAW,ASM,OCFS2等,一切集群节点能够同时读写同享存储,OracleRAC的根本拓扑结构如下。(RAW便是裸设备,没有文件体系,便是直接在硬盘上面进行读写)。
这个图分为三个部分,第一个部分便是客户端,第二个部分是节点部分,最终一部分是同享存储部分。
作为用户会去拜访集群数据库,在节点层有许多节点,每一个节点相当于一个主机,或许一个操作体系。每一个操作体系是装置在一台服务器上独立完结的。最底层是os,即操作体系。在操作体系上层装置的是clusterware,这是一个高可用的集群软件。再上面一层是oraclerac数据库,这个数据库还发动了rac监听,每一个节点都是有os,clusterware,oracleraclistener三部分组成的。
在10g之前的产品,假如要运用rac集群就必须要凭借第三方高可用软件。在10g之后Oracle推出了自己的一款clusterware,关于高可用软件这部分能够运用oracle本身的,也能够运用第三方的。
在每一个节点上面发动相关的实例,每一个实例会发动相关的监听端口。这个端口便是监听客户端过来的恳求,在Oracle集群傍边能够有多个节点。
同享存储是rac为了实现数据的同享,实现同享方法有很多种,比如raw,asm等。
由拓扑结构可知:
一个OracleRac数据库有多个服务器节点组成,每个服务节点上面都有自己独立的OS,ClusterWare,OracleRAC数据库程序等,每个节点都有自己的网络监听器。ClusterWare是一个集群软件,首要用于集群体系办理,OracleRAC数据库程序用于供给Oracle实例进程,以供给客户端拜访集群体系,监听服务首要用于监控自己网络端口的信息,一切的服务和程序供给操作体系都去拜访一个同享存储,最终完结数据的读写。同享存储的方法有很多种,能够经过自动存储办理(ASM),Oracle集群文件体系(OCFS),裸设备(RAW),网络同享区域存储(NAS)等来确保整个集群体系的数据一致性。
Oraclerac数据库和经常所说的数据库有什么区别呢?Oraclerac数据库首要是供给oracle实例进程,以供客户端拜访集群体系。从Oracle运行机制来说,集群中每台服务器便是一个Oracle实例,多个实例对应同一个Oracle数据库,组成了Oracle数据库的集群。
从图中能够看出,运行在两个节点上面的数据库拜访同一个RAC数据库,而且两个节点的本地磁盘仅用存放Oracle装置程序和ClusterWare软件,而在同享存储上,存放着Oracle的操控文件,数据文件,联机日志文件,归档日志文件等,这是装置OracleRac时的一种数据存储方法,其实,RAC供给了多种数据存储方法。
集群里边的每一个服务器或许里边的每一个节点便是一个Oracle实例,有多个节点或许说是多个实例同时拜访同一个数据库。从上图能够看到节点的本地磁盘上面存储的是Oracle的装置程序和clusterware集群软件的程序。在同享存储上面存放着Oracle的数据文件,操控文件,联机文件等等。
oraclerac双机集群
ORACLERAC原理:在一个使用环境傍边,一切的服务器使用和办理同一个数据库,意图是为了分散每一台服务器的工作量,硬件上至少需求两台以上的服务器,并且还需要一个同享存储设备。一起还需求两类软件,一个是集群软件,别的一个就是Oracle数据库中的RAC组件。一起一切服务器上的OS都应该是同一类OS,依据负载均衡的配置战略,当一个客户端发送恳求到某一台服务的listener后,这台服务器依据咱们的负载均衡战略,会把恳求发送给本机的RAC组件处理也可能会发送给别的一台服务器的RAC组件处理,处理完恳求后,RAC会经过集群软件来拜访咱们的同享存储设备。
逻辑结构上看,每一个参与集群的节点有一个独立的instance,这些instance拜访同一个数据库。节点之间经过集群软件的通讯层(communicationlayer)来进行通讯。一起为了削减IO的耗费,存在了一个大局缓存服务,因而每一个数据库的instance,都保留了一份相同的数据库cache。
RAC中的特点是:
每一个节点的instance都有自己的SGA
每一个节点的instance都有自己的backgroundprocess
每一个节点的instance都有自己的redologs
每一个节点的instance都有自己的undo表空间
一切节点都同享一份datafiles和controlfiles
Oracle还提出了一个缓存交融的技能(Cachefusion)
意图有两个
1.确保缓存的共同性
2.削减同享磁盘IO的耗费
因而在RAC环境中多个节点保留了同一份的DBCACHE
缓存交融(Cachefusion)工作原理:
?****************************************
1.其间一个节点会从同享数据库中读取一个block到dbcache中
2.这个节点会在一切的节点进行穿插dbblockcopy
3.当任何一个节点缓存被修正的时候,就会在节点之间进行缓存修正
4.为了达到存储的共同最终修正的成果也会写到磁盘上
ClusterWare组件:
*******************
有四种Service
Crsd-集群资源服务
Cssd-集群同步服务
Evmd-事情办理服务
oprocd-节点检测监控
有三类Resource
VIP-虚拟IP地址(VirtualIP)
OCR-OracleClusterRegistry(集群注册文件),记载每个节点的相关信息
VotingDisk-Establishesquorum(表决磁盘),裁定机制用于裁定多个节点向同享节点一起写的行为,这样做是为了避免发生冲突。
RAC的组件:
************
提供过了额外的进程,用来维护数据库
LMS-GobalCacheServiceProcess大局缓存服务进程
LMD-GlobalEnqueueServiceDaemon大局查询服务看护进程
LMON-GlobalEnqueueServiceMonitor大局查询服务监督进程
LCK0-InstanceEnqueueProcess实例查询进程
2013年05月13日-游目骋怀-游目骋怀
ORACLERAC原理:在一个使用环境傍边,一切的服务器使用和办理同一个数据库,意图是为了分散每一台服务器的工作量,硬件上至少需求两台以上的服务器,并且还需要一个同享存储设备。一起还需求两类软件,一个是集群软件,别的一个就是Oracle数据库中的RAC组件。一起一切服务器上的OS都应该是同一类OS,依据负载均衡的配置战略,当一个客户端发送恳求到某一台服务的listener后,这台服务器依据咱们的负载均衡战略,会把恳求发送给本机的RAC组件处理也可能会发送给别的一台服务器的RAC组件处理,处理完恳求后,RAC会经过集群软件来拜访咱们的同享存储设备。
逻辑结构上看,每一个参与集群的节点有一个独立的instance,这些instance拜访同一个数据库。节点之间经过集群软件的通讯层(communicationlayer)来进行通讯。一起为了削减IO的耗费,存在了一个大局缓存服务,因而每一个数据库的instance,都保留了一份相同的数据库cache。
RAC中的特点是:
每一个节点的instance都有自己的SGA
每一个节点的instance都有自己的backgroundprocess
每一个节点的instance都有自己的redologs
每一个节点的instance都有自己的undo表空间
一切节点都同享一份datafiles和controlfiles
Oracle还提出了一个缓存交融的技能(Cachefusion)
意图有两个
1.确保缓存的共同性
2.削减同享磁盘IO的耗费
因而在RAC环境中多个节点保留了同一份的DBCACHE
缓存交融(Cachefusion)工作原理:
?****************************************
1.其间一个节点会从同享数据库中读取一个block到dbcache中
2.这个节点会在一切的节点进行穿插dbblockcopy
3.当任何一个节点缓存被修正的时候,就会在节点之间进行缓存修正
4.为了达到存储的共同最终修正的成果也会写到磁盘上
ClusterWare组件:
*******************
有四种Service
Crsd-集群资源服务
Cssd-集群同步服务
Evmd-事情办理服务
oprocd-节点检测监控
有三类Resource
VIP-虚拟IP地址(VirtualIP)
OCR-OracleClusterRegistry(集群注册文件),记载每个节点的相关信息
VotingDisk-Establishesquorum(表决磁盘),裁定机制用于裁定多个节点向同享节点一起写的行为,这样做是为了避免发生冲突。
RAC的组件:
************
提供过了额外的进程,用来维护数据库
LMS-GobalCacheServiceProcess大局缓存服务进程
LMD-GlobalEnqueueServiceDaemon大局查询服务看护进程
LMON-GlobalEnqueueServiceMonitor大局查询服务监督进程
LCK0-InstanceEnqueueProcess实例查询进程

未经允许不得转载:迅闻网 » oracle rac原理(oracle rac双机集群)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页