RAC基本原理
什么是RAC?
多个实例跑在多个服务器上
一个数据库存放在共享的存储上,所有实例都可以访问
实例之间通过内联网络交换数据和信息

共享存储内容:数据文件、REDO、UNDO、控制文件
参数文件可以共享也可以不共享
RAC架构:

RAC的特点:
具有普通单节点的特点
每个节点的实例都有自己的SGA
每个节点的实例都有自己的后台进程
每个节点的实例都有自己的REDO LOGS (存于共享上,所有实例都可以访问)
每个节点的实例都有自己的UNDO表空间
RAC如何容错:
如果一个节点挂掉:
其他节点读取失败节点的REDO中最后一次检查点之后的信息
对最后一次REDO里面的所有信息都进行恢复(不管提交还是未提交)
回滚未提交的事务
RAC后台进程

RAC环境下,实例多出来的进程
全局缓存服务进程 gobal cache service process
全局查询服务守护进程 global enqueue service daemon
全局查询服务监视进程 global enqueue service monitor
实例查询进程 instance enqueue process
DIAG 诊断守护进程 diagnostic daaemon
LMON : (原名:lock monitor process)
管理全局的锁和资源
监控全局的锁资源,处理死锁和阻塞
监控整个集群状态,维护GCS的内存结构
处理非正常终止的进程和实例
当实例离开或加入集群时,锁和资源的重新配置
也被称为
LMSn : (相对LCK来讲,是全局的内存管理)
主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE 中传输镜像
当在某个数据库块上发生一致性读时,LMS负责回滚该数据块,并将它COPY到请求的实例上。
每个RAC节点至少有2个LMS进程
也被称为GCS (global cache services ) prcoess
LCK (原名:lock process)(相对LMSn 来讲,是一个本地的)
进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字典等对象的访问;
并处理非CACEH FUSION 的chace 资源请求(本地的数据字典等)
由于LMS进程负责主要的锁管理功能,所以每个实例只能一个LCK进程
LMD (lock monitor daemon process)
进程主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来自于其他实例的资源请求。
每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例具有相应的权利使用该资源。
(管理当你去访问另外一个实例的资源的时候,你需要得到它的授权)
DIAG
例用对实例的健康进行监控,同时也监控是否挂起或者出现死锁
收集实例和进程出错时的关键诊断信息
这个进程会更新alert日志文件,写入一些重要告警信息
RAC本身的进程:
独立的服务CRS (CRS层是实现RAC构架的具体实现方式)
集群资源服务
集群同步服务
事件管理服务
事件的发布及订阅服务
CRS:cluster ready services
管理集群内高可用操作的基本程序
管理的任何事物被称之为资源
数据库、实例、监听、虚拟IP、应用进程等
是根据存储于OCR中的资源配置信息来管理这些资源。(OCR相关于注册表的功能)
当一资源的状态改变时,CRS进程生成一个事件
CSS :cluster synchronization service
管理集群节点的成员资格
控制哪个结点为集群的成员,结点在加入或离开集群时通知集群成员来控制集群的配置信息
此进程发生故障导致集群重启
EVM : event management
事件管理守护进程
发布CRS创建事件的后台进程
ONS :oracle notification service
通信的快速应用通知事件的发布及订阅服务
VIP
是一个虚拟IP,绑定在某个物理网卡上的。
应用使用VIP进行连接
如果RAC某个节点挂掉,它的VIP自动被配置到其他节点上
OCR :oracle cluster registry
保存RAC集群的各种资源信息DB,instances(rdbms,asm),services ,onde applications(vip,ons,gsd),listener process
类似Windows 注册表
存储于共享磁盘上,所有实例共享
默认有2个互备磁盘
表决磁盘
存储于共享磁盘上,所有实例共享
用户确定各个实例的关系
当有节点失效时,通过表决磁盘来决定驱走哪个实例
默认有3个互备磁盘
















