Oracle RAC 内部机制深入解析
1. RAC 概述
RAC(Real Application Clusters)集群由单个数据库和多个实例组成。每个实例都有自己的系统全局区(SGA),包含与单实例 SGA 相同的结构,如固定和可变内存区域、缓冲区缓存和日志缓冲区。每个实例都可以访问共享数据库,并可能读取或更新任何数据块。为了保持数据一致性和完整性,需要在实例之间协调数据块的访问,这个过程称为同步,它涉及准备一致读和当前版本的数据块、在缓冲区缓存之间传输数据块以及节点内消息传递。
为了实现集群中实例之间的同步,引入了两个虚拟服务:全局队列服务(GES)和全局缓存服务(GCS)。GES 控制对锁的访问,是分布式锁管理器(DLM)的发展;GCS 控制对数据块的访问,是 Oracle 实现缓存融合(Cache Fusion)的机制。
2. 全局队列服务(GES)
- 功能 :GES 负责实例间的资源协调,管理所有非缓存融合的实例内资源操作,跟踪多个实例访问的资源的 Oracle 队列机制状态,还负责死锁检测。
- 背景进程 :GES 主要通过 LMDO 和 LCKO 后台进程执行活动。LMDO 用于处理全局资源,LCKO 用于获取整个实例所需的锁,如维护字典(行)缓存锁。
- 资源和队列 :资源是代表数据库组件的内存结构,访问需受限或序列化;队列是序列化对特定资源访问的内存结构。如果资源仅本地实例需要,队列可本地获取;若远程实例需要,则本地队列需变为全局队列。
超级会员免费看
订阅专栏 解锁全文
46

被折叠的 条评论
为什么被折叠?



