Oracle RAC 技术方案
概述
Oracle RAC 是 Oracle 数据库企业版的一项核心高可用性技术,它允许多台服务器(节点)组成一个集群,同时访问同一个数据库,其核心优势在于消除单点故障、提供无缝的故障切换和实现水平扩展,从而构建一个高可用、高性能、可扩展的数据平台。

本方案旨在为企业提供一个稳健、可扩展且高性能的 Oracle RAC 部署蓝图,以满足关键业务系统的连续性要求。
核心架构设计
一个典型的 RAC 环境由以下几个关键部分组成:
1 集群层
这是 RAC 的基础,负责管理集群中的所有节点,使其像一个单一的服务器系统。
- 集群件: 这是 RAC 的“大脑”,负责节点间的通信、成员管理、故障检测和资源管理,主要包括:
- Cluster Synchronization Services (CSS): 负责管理集群成员关系,确保只有一个实例在任何给定时间控制一个资源(如数据库)。
- Cluster Ready Services (CRS): 管理所有高可用资源,如 Virtual IP (VIP)、数据库实例、监听器等,当节点发生故障时,CRS 会在其他健康的节点上重启这些资源。
- Oracle High Availability Services (OHAS): 作为集群的起点,负责启动和管理所有集群进程。
- Cluster Health Monitor (CHM): 监控集群和数据库的健康状况。
2 存储层
存储层是所有节点共享的关键组件,其设计是 RAC 成功的基石。

- 共享存储: 所有数据库文件(数据文件、控制文件、重做日志、归档日志等)必须存放在所有节点都能同时访问的存储上。
- 推荐技术:
- SAN (Storage Area Network): 使用光纤通道协议连接,提供高性能和高可靠性。
- NAS (Network Attached Storage): 使用 NFS 协议连接,成本相对较低,适用于非极端 I/O 场景。
- Oracle ASM (Automatic Storage Management): 强烈推荐,ASM 是 Oracle 专有的卷管理器和文件系统,专为数据库设计,它简化存储管理,提供条带化、镜像和快速故障切换等高级功能。
- 存储设计要点:
- 冗余: 存储自身必须具备高可用性,如 RAID 1+0 或 RAID 5/6,控制器冗余,电源冗余等。
- 性能: 根据业务 I/O 需求,配置合适的磁盘类型(SSD/HDD)、LUN 大小和数量。
- 多路径: 必须配置多路径软件(如 PowerPath, DM-Multipath),以确保在存储路径或 HBA 卡故障时,访问能自动切换,避免单点故障。
- 推荐技术:
3 网络层
网络是节点间通信和客户端连接的生命线。
- 私有网络 (Cluster Interconnect):
- 用途: 节点间同步缓存块(Global Cache Service, GCS)、管理信息和心跳检测。此网络的性能直接影响 RAC 的整体性能。
- 推荐配置: 使用独立、高带宽、低延迟的物理网卡,推荐 10GbE 或更高速率,避免使用公共网络。
- 协议: 传统的 UDP 协议,或性能更优的 RDS (Reliable Datagram Sockets) 协议。
- 公共网络:
- 用途: 客户端连接、数据库管理、备份等。
- 配置: 为每个节点配置至少两个物理网卡以实现冗余。
- VIP (Virtual IP): 每个节点一个,当节点故障时,VIP 会自动漂移到另一个健康节点上,客户端可以快速重新连接,无需等待 TCP 超时。
- SCAN (Single Client Access Name):
- 用途: 为所有客户端提供一个单一的数据库入口,SCAN 由 DNS 解析到 3 个 SCAN VIP,这些 VIP 在集群中负载均衡。
- 优势: 简化客户端配置,增加连接的灵活性和可扩展性。
4 节点层
运行 Oracle 数据库实例的服务器。
- 服务器配置:
- 硬件: 选择经过 Oracle 认证的服务器(如 Oracle Exadata, IBM Power, HP ProLiant, Dell PowerEdge)。
- CPU: 根据业务负载选择足够数量的核心。
- 内存: 为 SGA (System Global Area) 和操作系统预留足够内存,确保节点间内存大小一致。
- 操作系统: 选择经过认证的 Linux 发行版(如 Oracle Linux, Red Hat Enterprise Linux)或 Unix (如 AIX, Solaris)。
- Oracle 软件:
- Grid Infrastructure: 包含集群件和 ASM,是 RAC 的基础软件。
- Oracle Database: 包含 RAC 选项的数据库软件。
高可用与灾难恢复方案
1 高可用性
- 故障检测与自动恢复:
- 节点故障: 当一个节点宕机,CRS 会自动在该节点上停止所有资源(实例、监听器等),VIP 会立即漂移到其他健康节点,客户端连接会中断并快速重连到新节点,数据库实例在其他节点上继续运行,业务影响最小。
- 实例故障: 数据库实例在某个节点上异常崩溃,ASM 和 CRS 会自动在其他节点上重新启动该实例。
- 存储故障: ASM 的镜像功能可以自动在磁盘组中镜像数据,当一个磁盘故障时,ASM 会自动使用其镜像副本,数据库继续运行,无需人工干预。
- 网络故障: 多路径软件和 VIP 漂移机制可以处理网络路径故障。
2 灾难恢复
- Data Guard (物理 Standby):
- 方案: 在异地数据中心部署一个或多个备库,生产库(Primary)通过 Redo 传输服务将重做日志实时发送到备库,备库应用这些重做日志,保持与主库的数据同步。
- 优势: 提供数据级别的保护,可以实现快速、自动的故障切换,业务连续性级别高。
- 模式:
- 物理 Standby: 数据文件结构与主库完全一致,安全性最高。
- 逻辑 Standby: 可以打开并用于只读查询,灵活性更高。
- Active Data Guard:
这是 Data Guard 的高级选项,允许备库在应用重做日志的同时,以只读模式对外开放,分担主库的查询压力,实现读写分离。
性能优化策略
- 存储优化:
- 使用 ASM: 充分利用 ASM 的条带化和镜像功能,提升 I/O 性能和数据安全性。
- 热数据/冷数据分离: 将不同 I/O 特征的数据文件放置在不同的磁盘组中(使用 SSD 的磁盘组存放热数据,使用 HDD 的磁盘组存放冷数据和归档日志)。
- 网络优化:
- 优化 Interconnect: 确保私有网络带宽充足、延迟低,使用
crsctl check cluster interconnect命令监控网络性能,必要时启用 RDS 协议。 - 监控全局缓存服务: 关注
global cache cr get和global cache current get等等待事件,过高的等待意味着节点间通信频繁,可能需要优化 SQL 或调整 SGA 大小。
- 优化 Interconnect: 确保私有网络带宽充足、延迟低,使用
- SQL 与应用优化:
- 减少争用: 优化 SQL 语句,减少对同一数据块的并发访问,特别是对索引块的争用。
- 使用绑定变量: 避免 SQL 硬解析,减少 CPU 消耗和 library cache 争用。
- 应用层读写分离: 将报表、分析等查询导向 Data Guard 的备库。
- 内存优化:
- 合理配置 SGA: 根据物理内存大小,为 SGA 和操作系统预留足够内存,通常建议 SGA 占物理内存的 40%-70%。
- 使用大页: 减少内存页的数量,降低内存管理的开销。
实施与运维
1 实施步骤
- 规划与设计: 确定集群规模、节点配置、存储架构、网络拓扑。
- 硬件与系统准备: 采购服务器、存储和网络设备,安装并配置操作系统、多路径软件、网络和主机名。
- 安装 Grid Infrastructure: 在所有节点上安装 Grid Infrastructure 软件,并创建 ASM 磁

