暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

邦德带你深入解读Oracle RAC,透彻超详细

原创 IT邦德 2021-08-25
2740
作者:IT邦德

中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g  OCP/OCM、Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007

微信:jem_db
QQ交流群:168797397

1. RAC 概念 (Real Application Clusters)

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

image.png

2. RAC的特点

除了具有普通的数据库特性外: 
每一个节点的instance都有自己的SGA 
每一个节点的instance都有自己的background process 
每一个节点的instance都有自己的redo logs 
每一个节点的instance都有自己的undo表空间

3.RAC后台进程
image.png

4.1 RAC相关的后台进程

LMS - Gobal Cache Service Process 全局缓存服务进程 
LMD - Global Enqueue Service Daemon 全局查询服务守护进程 
LMON - Global Enqueue Service Monitor全局查询服务监视进程 
LCK0 - Instance Enqueue Process 实例查询进程 
DIAG (Diagnostic Daemon) 诊断守护进程
4.1 RAC相关的后台进程
LMS - Gobal Cache Service Process 全局缓存服务进程 
LMD - Global Enqueue Service Daemon 全局查询服务守护进程 
LMON - Global Enqueue Service Monitor全局查询服务监视进程 
LCK0 - Instance Enqueue Process 实例查询进程 
DIAG (Diagnostic Daemon) 诊断守护进程

## LMON--Lock Monitor Processes 
监控整个集群状况,维护GCS的内存结构。 
处理非正常终止的进程和实例。 
当实例离开和加入集群时,锁和资源的重新配置。 
管理全局的锁和资源。 
监控全局的锁资源,处理死锁和阻塞。 
也被称为Global enqueue service monitor

## LMSn-- Lock Monitor Services 
LMS进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE 中传输块镜像。 
当在某个数据块上发生一致性读时,LMS负责回滚该数据块,并将它copy到请求的实例上。 
每个RAC节点至少有2个LMS进程。 
也称作 GCS (Global Cache Services) processes

## LCK--Lock Process
LCK进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字 典等对象的访问; 
并处理非CACEH FUSION的CHACE资源请求(例如:DICTIONARY CACHE或 row cache的请求) 
由于LMS进程负责主要的锁管理功能,所以每个实例只有一个LCK进程

## LMD--Lock Monitor Daemon Process
LMD进程主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来 自于其他实例的资源请求。 
每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例具有相应的权利使用该资源。 
 一个实例(master)的共享内存中存在一个特殊的队列,该队列纪录来自其他远程实例的资源请求,当远程实例的LMD进程发出一个资源请求时,该请求指向 
master实例的LMD,当master实例的LMD进程受到该请求后,在共享内存中的特殊队列中监测该资源是否无效,如果有效则LMD进程更新该资源对列的状态 
,并通知请求资源的LMD进程该资源队列可以使用了,如果资源队列正在被其 他实例使用或者当前无效,则LMD进程通知正在使用中的实例的LMD进程应该 
释放该资源,等资源释放变得有效时,MASTER实例的LMD进程更新该资源队 列的状态并通知请求资源实例的LMD进程该资源队列可以使用了。

## DIAG (Diagnostic Daemon)
Oracle10g新的后台进程。 
例行对实例的健康情况进行监控,同时也监控实例是否挂起或者出现死锁。 
收集实例和进程出错时的关键诊断信息。 
这个进程会更新alert日志文件,写入一些重要告警信息

5. RAC的服务进程

独立的服务CRS
CRS- 集群资源服务 
CSS - 集群同步服务 
EVMD 事件管理服务 
ONS--事件的发布及订阅服务

5.1 CRS--Cluster Ready Services
管理集群内高可用操作的基本程序。 
CRS管理的任何事物被称之为资源:数据库、实例、监听、虚拟IP(VIP)地址、应用进程等等 
CRS是根据存储于OCR中的资源配置信息来管理这些资源 
当一资源的状态改变时,CRS进程生成一个事件

5.2 CSS--Cluster Synchronization Service
管理集群节点的成员资格,控制哪个结点为集群的成员、结点在加入或离开集群时通知集群成员来控制集群的配置信息,此进程发生故障导致集群重启

5.3 EVM--Event Management
事件管理守护进程。 
发布CRS创建事件的后台进程

5.4 ONS--Oracle Notification Service
通信的快速应用通知事件的发布及订阅服务

6. RAC的其它组成部分

VIP - 虚拟IP地址(Virtual IP) 
OCR - Oracle Cluster Registry (集群注册文件),记录每个节点的相关信息 
Voting Disk - (表决磁盘) :仲裁机制用于仲裁多个节点向共享节点同时写的行,这样做是为了避免发生冲突

7.RAC架构图
image.png

本文如有错误或不完善的地方请大家多多指正,请关注公众号:IT邦德
留言微信:jem_db 或 QQ:2243967774 皆可,您的批评指正是我写作的最大动力!
大家多多点赞,转发,谢谢

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论