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协调数据块在各个实例中的分布和状态,从而保证数据一致性和高可用性。