深入探究 RAC 数据库内部机制
1. RAC 数据库概述
RAC(Real Application Clusters)集群由单个数据库和多个实例组成。每个实例都有自己的系统全局区(SGA),其结构与单实例 SGA 相同,包含固定和可变内存区域、缓冲区缓存和日志缓冲区。每个实例都可以访问共享数据库,并可能读取或更新任何数据块。为了维护数据的一致性和完整性,需要在实例之间协调数据块的访问,这个过程称为同步。
为了实现集群中实例之间的同步,引入了两个虚拟服务:全局队列服务(GES)和全局缓存服务(GCS)。GES 控制锁的访问,GCS 控制数据块的访问。
2. 全局队列服务(GES)
2.1 GES 的作用
在 RAC 数据库中,GES 负责实例间的资源协调,管理所有非缓存融合的实例内资源操作。它跟踪所有被多个实例访问的资源的 Oracle 队列机制,用于管理事务、表和其他结构的并发访问,同时还负责死锁检测。
2.2 背景进程
GES 主要通过 LMDO 和 LCKO 两个背景进程来执行活动。一般来说,进程与本地的 LMDO 背景进程通信以操作全局资源,本地的 LMDO 背景进程再与其他实例上的 LMDO 进程通信。LCKO 背景进程用于获取整个实例所需的锁,例如维护字典(行)缓存锁。
服务器进程使用异步陷阱(AST)消息与这些背景进程通信,以避免背景进程在等待远程节点实例的回复时阻塞。背景进程还可以向持有锁的进程发送阻塞异步陷阱(BAST),请求将当前持有的锁降级为限制较小的模式。
2.3 资源和队列
资源是一种内存结构,代表数
超级会员免费看
订阅专栏 解锁全文
39

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



