Oracle-揭开RAC神秘面纱

集群就是多个节点当做一个系统对外提供服务。

集群的分类
1、根据功能特点划分
⾼可⽤集群

高可用集群可以分为两类:一种是hot failover和cold failover,区别是hot failover是指多个节点处于active的状态,同时对外提供服务。cold failover是指主备模式。Rac是属于hot failover模式。


负载均衡集群

通过多个节点来分担系统的负载,均衡负载集群主要将节点分为两部分,一部分是前端的负载节点,一个是后端的负载节点。主要是通过前端的负载调度然后实现了将业务分配到多个节点之上。后端节点只是对落在该节点的服务进行服务。


⾼性能计算集群

多个节点提供计算
2、根据数据的存储共享⽅式
share-everything集群

多个节点作为一个系统来提供服务这叫一个集群,共享内存,共享存储。

 

 

RAC简介
RAC是⼀种⾼可⽤,⾼性能,负载均衡的share-everything的集群。

对于客户端来说不管链接到了哪个节点是透明的,不需要知道是怎么链接的。在节点服务器之间是通过私网心跳来做数据的传输和同步。

 

 

 

RAC发展及版本改进
8i:内存融合雏形
9i:数据库层⾯实现集群
10g:集群管理软件,真正实现集群;ASM存储管理
11g:Grid Infrastucture,集群软件更独⽴地管理和部署
12c:Flex Cluster,Flex ASM 

 

 

RAC: 8i
内存融合雏形(Oracle Parallel Server):
实现多实例的数据读读,读写模式(DLM)
写写模式仍需要借助磁盘作为中介

8i是不可以实现两个节点同时写,如果A节点要写,B节点也要写的话,那么B要等到A节点写完之后落盘,即数据写到磁盘后,B才能去磁盘中读取。

读取的时候是可以同时读取的。

 

 

RAC 9i
1、真正内存融合
2、 Global Resource Dictionary
3、 RAC 特有进程: LMON, LMS, LMD

真正内存融合:两个节点之间通过私有网络连接到一起,在8i里面,会出现两个节点同时要写相同的数据发生等待,因为没有办法记录谁先写谁后写。

在9i里面实现了真正的内存融合,通过数据的不同版本,即时间机制SCN,如果在A节点上面对数据做修改,那么数据的SCN号就会发生变化,这个变化的SCN通过集群的相关的进程传到其他节点上面,因为SCN号是单向递增的,每时每刻都在增大,在增加的过程当中两个节点的SCN都不是重复的,也就是A节点在操作数据的时候记录了一个SCN号,,实时的广播给其他节点,当B节点要再去写这个数据的时候,就以A节点最后的SCN号为最新的版本来写,这样保证了数据不同版本在所有节点的传递。这样实现了真正的内存融合。

 

Global Resource Dictionary:集群资源的访问时十分复杂的,在RAC里面将所有资源放到统一目录下面管理,每个节点都存放着资源的目录。要去寻找资源的时候就到这个目录里面去找,确定这些资源到底在哪个节点。

 

RAC 特有进程: LMON, LMS, LMD:LMON进程维护节点之间关系的, 保证集群节点之间是相通的。即维护心跳机制。

LMON进程写入到控制文件,CGS,cluster group service,是实现节点之间心跳的一种机制。

LMS进程:在节点之间传输数据和SCN号,节点的通信和数据的同步都是由LMS进程来维护。LMS进程访问最。多的是global cache service,全局的数据的资源。

LMD进程:管理的是队列的信息,多个节点都要访问一个资源,由于优先级的不同,或者锁的信息需要节点排队的,这样就会产生排队,队列的资源就由LMD进程来管理。

 

在9i的时候是没有集群软件的,多节点的访问只能是在数据库层面的,集群层面没有一个单独的产品。在企业应用的时候要借助第三方的集群管理软件,这是非常不方便的。

 

RAC: 10g

CRS(Cluster Ready Service)的出现使得集群能够真正在操作系统和数据库层⾯实现

ASM专⻔⽤于集群⽂件的管理

10G解决了9i的问题,提出了CRS集群管理软件,这样就实现了在操作系统层面和数据库层面的集群。同时10G引入了ASM专⻔⽤于集群⽂件的管理 。

CRS软件包含了三个组件,CSS负责维护集群一致性的,当集群出现问题的时候要去访问voting盘,通过投票来决定谁留在集群当中,谁被提出集群。

CRS负责对应用资源管理,资源主要包括ASM资源,监听的资源,VIP的资源等。这些资源都是写在OCR里面的。

EVM组件负责产生和记录集群的事件,并且事件要在节点之间进行传输。

 

10G相对于9i来说出现了独立的集群管理软件CRS,实现了为RAC涉及到存储管理方式。

RAC: 11g
1、集群组件的资源形式及agent管理
2、 SCAN的引⼊

使得客户端连接数据库更加简单,节点的删除与增加因为有了SCAN使得客户端不需要去修改IP。
3、 OCR和Voting也可以保存在ASM磁盘中了。

在10G的时候OCR和Voting是保存在裸设备上面,后来裸设备被摈弃掉了,引入了ASM管理。
4、新增加集群进程: LMHB

在9i出现了集群的几个特有的进程,LMD,LMON,LMS,这些进程在工作的时候也可能出现问题,对于这些比较重要的进程如果挂了很可能导致集群出现严重的问题,比如集群的重启和集群的挂掉。LMHB是为了避免其他进程的挂掉影响到整个集群的状态。LMHB进程作用是监视其他进程。

 

Oracle Clusterware 提供了集成的集群件层,从⽽为应⽤程序提供了⼀个完整的环境。

 

RAC: 12c

Flex Cluster和Flex ASM,彻底改变了RAC集群中数据库实例与ASM实例之间的关系

为了适应于云环境,12c实现了Flex Cluster和Flex ASM,在11G RAC下面数据库实例和ASM实例都是1:1的关系,紧耦合关系。12C出现实现的松耦合的关系,现在的数据库实例完全不依赖于本地ASM实例,同时也不依赖于ASM存储。

 

单实例DB vs RAC

从内存角度来说,单实例和RAC的内存并不是特别大,区别在内存的组件和部分池子里面保留了RAC的一些相关的信息。

在共享池里面保存了内存融合相关的信息,比如gcs,ges的定义信息。

LMON监控集群的状况,维护CGS的内存结构;监控费正常终⽌的进程和实例;增加或减少实例时,锁和资源的重新配置;监控全局锁资源,处理死锁和阻塞。
LMS维护GRD中数据块资源的信息,完成数据块在实例之间的传递⼯作。相关消息的发送和接收⼯作。是整个内存融合体系中最忙碌的进程。
LMD负责内存中的队列资源,每个实例只有⼀个LMD进程,为LMD0.多个节点要访问一个数据,必须要有一个排队的机制,谁先访问和谁后访问,即控制多个节点对数据块的访问
LCK负责锁的管理, LCK0,只有⼀个辅助LMD进程,通过锁机制控制数据并发的访问
DIAG转储数据块相关的诊断信息,当系统可能出现性能问题时, DIAG进程响应其他进程发出的dump请求,将相关的诊断信息写到trace⽂件中。这种⽅式⽣成诊断信息的操作是轻量级的,并不会对系统产⽣可⻅的性能影响。
LMHB监控RAC中的其他进程。 

 

外存 

控制⽂件
+Voting file的⻆⾊,写⼊本实例的状态信息。存放在所有节点都可以访问的共享存储上。

在RAC数据里面,控制文件除了承担在单实例里面控制文件功能之外,还要充当Voting盘的角色,LMO进程是负责集群的连通管理的,这个时候要写到控制文件里面去,实现心跳机制。所以在RAC里面控制文件不仅仅是承担一个控制文件的角色还得承担表决盘的角色。这样可以通过实例的心跳信息来保证实例之间的相互连通。

数据⽂件&表空间
for all, 存放于共享存储上;
for undo tablespace: 为每个实例创建⾃⼰的表空间,每个实例的事务产⽣的回滚信息只能放在本地实例⾃⼰的回滚表空间,不能跨回滚段也不能跨回滚表空间。
for temp tablespace: Oracle并不要求为每个实例创建⾃⼰的临时表空间,但是会在共有的临时表空间分配⾃⼰的临时段,在同⼀时间,⼀个临时段只能被⼀个实例使⽤。

⽇志⽂件
要求为每⼀个实例创建⾃⼰的重做线程

参数⽂件
建议使⽤spfile,并保存在共享存储上


  1. undo的使⽤权限:分配使⽤;读取;恢复事务期间在节点1上面可以去读取节点2上面undo表空间的数据,同理在事务恢复的时候不仅仅可以用自己的表空间,还可以使用其他
    2、实例间的分配:不同实例可以设置不同的undo tablespace,参数(UNDO_TABLESPACE)
    3、集群的undo 表空间的切换:包含 SID ⼦句的 ALTER SYSTEM SET UNDO_TABLESPACE

当使用alter system set undo_tablespace=的时候,之前的undo表空间就处于offline的状态,因为一个实例只允许一个undo表空间存在。之前的undo表空间处于offline的状态了,但是可能在之前的undo表空间里面有一些事务没有完成,回滚段数据还需要被使用,对于之前的表空间不会立即失效,还是会继续发挥作用,直到所有事务要使用的数据都完成,之前的表空间才会失效。之后就完整的使用新创建制定的新的undo表空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值