Oracle RAC 架构深度解析
Oracle RAC 架构深度解析
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
RAC(Real Application Clusters)多实例共享存储[1]:
特性:
- 多实例
- 共享存储
- Cache Fusion
- 高可用
详细见:Oracle RAC 架构详解。
2. RAC 架构
2.1 组件
- 多节点
- 共享存储(ASM / SAN)
- 集群件(Grid Infrastructure)
- Cache Fusion
- 私有网络
- 公共网络
2.2 单实例 vs RAC
| 特性 | 单实例 | RAC |
|---|---|---|
| 实例 | 1 | N |
| 存储 | 独占 | 共享 |
| 高可用 | 低 | 高 |
| 扩展 | 垂直 | 水平 |
3. Grid Infrastructure
3.1 组件
- OHASD(Oracle High Availability Service Daemon)
- CSSD(Cluster Synchronization Service Daemon)
- CRSD(Cluster Ready Service Daemon)
- EVMD(Event Manager Daemon)
- ASM
- Listener
3.2 Voting Disk
- 节点仲裁
- 多数票
- 防止脑裂
3.3 OCR(Oracle Cluster Registry)
- 集群配置
- 多副本
- 镜像
4. Cache Fusion
4.1 概念
- 内存间数据传输
- 跨实例读
- 跨实例写
4.2 流程
1. 实例 A 请求块
2. 块在实例 B Buffer Cache
3. 实例 B 通过私有网络传给 A
4. A 缓存
4.3 锁
- Past Image(PI)
- 锁升级
- GCS(Global Cache Service)
5. GCS / GES
5.1 GCS(Global Cache Service)
- 块级锁
- Cache Fusion
- LMS 进程
5.2 GES(Global Enqueue Service)
- 队列锁
- 全局锁
- LMD 进程
6. RAC 进程
6.1 LMS
- Lock Manager Server
- Cache Fusion 块传输
6.2 LMD
- Lock Manager Daemon
- 全局锁管理
- 死锁检测
6.3 LMON
- Lock Monitor
- 集群成员管理
- 节点加入/离开
6.4 LCKn
- Lock Process
- 非 Cache Fusion 资源
7. 服务
7.1 创建
BEGIN
DBMS_SERVICE.CREATE_SERVICE(
service_name => 'oltp_svc',
network_name => 'oltp_svc'
);
END;
/
srvctl add service -db orcl -service oltp_svc -preferred orcl1,orcl2
srvctl start service -db orcl -service oltp_svc
7.2 TAF(Transparent Application Failover)
- 客户端透明故障切换
- SELECT 继续
- 事务重连
7.3 FCF(Fast Connection Failover)
- 连接池
- 快速故障切换
- ODP.NET / UCP
8. 负载均衡
8.1 客户端
LOAD_BALANCE = YES
FAILOVER = ON
8.2 服务端
- Listener 负载
- 服务路由
9. VIP
9.1 概念
- Virtual IP
- 节点失败快速切换
- 应用重连
9.2 配置
srvctl add vip -node rac1 -address rac1-vip/255.255.255.0/eth0
10. SCAN
10.1 概念
- Single Client Access Name
- 单一连接点
- 3 个 IP
10.2 优势
- 客户端无需改连接串
- 节点增删透明
- 负载均衡
11. 故障切换
11.1 节点失败
1. 集群检测
2. VIP 迁移
3. 服务重定位
4. 客户端重连
5. 事务回滚
11.2 实例失败
- CRS 自动重启
- 重启失败则重定位
12. 性能
12.1 GC 等待
- gc cr block 2-way
- gc cr block 3-way
- gc current block 2-way
- Cache Fusion 性能
12.2 优化
- 私有网络高速
- UDP
- Jumbo Frame
- 减少跨节点访问
详细见:Oracle RAC 性能调优。
13. 监控
13.1 集群
crsctl stat res -t
crsctl check cluster -all
13.2 实例
SELECT
inst_id, instance_name, host_name, status
FROM gv$instance;
13.3 GC
SELECT
inst_id, event, total_waits, time_waited
FROM gv$system_event
WHERE event LIKE 'gc%';
13.4 服务
srvctl status service -db orcl
14. 管理
14.1 启停
# 集群
crsctl start cluster -all
crsctl stop cluster -all
# 节点
crsctl start crs
crsctl stop crs
14.2 数据库
srvctl start database -db orcl
srvctl stop database -db orcl
14.3 实例
srvctl start instance -db orcl -instance orcl1
srvctl stop instance -db orcl -instance orcl1
详细见:Oracle RAC 部署实战。
15. 常见坑与排错
15.1 脑裂
- 私有网络断
- Voting Disk 仲裁
- 少数节点驱逐
15.2 GC 性能
- 跨节点访问多
- 服务分区
- 应用层优化
15.3 CSSD 失败
- Voting Disk 问题
- 重启节点
16. 最佳实践
- 私有网络:万兆 + 冗余
- Jumbo Frame:性能
- ASM 共享存储:现代
- SCAN:客户端
- 服务分区:减少 GC
- VIP:快速故障切换
- TAF/FCF:应用
- 监控 GC:性能
- 测试故障:高可用
- 文档化:架构
17. 参考资料
[1] Oracle Real Application Clusters Administration and Deployment Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/racad/