Oracle RAC架构原理
RAC架构的核心在于多个实例共享同一个数据库,每个实例拥有独立的PGA,但共享同一个SGA。
SGA(System Global Area) 的变化
RAC实例的SGA与单实例SGA最大的区别在于新增了GRD(Global Resource Directory)部分。GRD负责记录数据块在各个实例SGA中的分布、版本和状态,确保数据一致性。由于数据块可以在任何实例的SGA中拥有拷贝,因此需要GRD来协调和管理这些拷贝。GRD没有明确的配置参数,每个SGA中只包含部分GRD信息。
SGA主要组成部分:
- Database Buffer Cache:存储从数据文件读取的数据块
- Redo Log Buffer:存储所有修改操作的日志信息
- Shared Pool:包含数据字典缓存、库缓存、JAVA池等
- Large Pool:用于备份恢复、IO Slaves等操作
其他重要组件:
- LGWR(Log Writer):负责将Redo Log Buffer中的日志信息写入Redo Log文件
- DBWR(Database Writer):负责将Database Buffer Cache中的脏数据块写入数据文件
- LMON、LMSn、LMD、LCK、GSD:RAC特有的后台进程,负责实例监控、资源协调、死锁检测等
RAC架构原理:
RAC通过高速互联网络将多个实例连接起来,每个实例都能访问共享数据库,所有实例的修改操作都会记录在Redo Log文件中,并通过GRD协调数据块在各个实例中的分布和状态,从而保证数据一致性和高可用性。