Oracle RAC Cache Fusion 详解

Oracle RAC Cache Fusion 详解

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

Cache Fusion 是 RAC 节点间缓存协同机制[1]:

详细见:Oracle RAC 架构深度解析Oracle Buffer Cache 工作原理详解


2. 原理

2.1 共享缓存

- 每节点 Buffer Cache
- 逻辑共享
- 节点间传输
- 不必写盘

2.2 GES/GCS

- GES(Global Enqueue Service):锁
- GCS(Global Cache Service):缓存
- 协同

3. 块状态

3.1 模式

- NULL(N):无
- SHARED(S):共享读
- EXCLUSIVE(X):独占写

3.2 角色

- LOCAL:仅一个节点持有
- GLOBAL:多节点持有

3.3 Past Image(PI)

- 旧版本
- 加速恢复
- 故障切换

4. 读操作

4.1 本地有

- 直接读
- 本地 Buffer Cache

4.2 本地无

1. 检查 GCS
2. 持有节点传输
3. 写盘(如果需要)
4. 本地接收

4.3 三种情况

- 其他节点无:从磁盘读
- 其他节点 S:传输 S
- 其他节点 X:传输并降级

5. 写操作

5.1 本地 X

- 直接写
- 本地 Buffer

5.2 远程 X

1. 请求 X
2. 远程降级或写盘
3. 传输 PI
4. 本地 X

5.3 多节点 S

1. 请求 X
2. 其他节点释放
3. 本地 X

6. GCS

6.1 功能

- 块持有者追踪
- 模式管理
- 块传输协调

6.2 资源

- BL(Block):数据块
- 资源 Master
- 节点分布

6.3 视图

SELECT * FROM v$gc_element;
SELECT * FROM v$cache_transfer;
SELECT * FROM v$bh;

7. GES

7.1 功能

- 锁管理
- 队列
- 全局

7.2 锁类型

- TX:事务
- TM:DML
- 其他

7.3 视图

SELECT * FROM v$ges_enqueue;
SELECT * FROM v$lock;

8. 性能指标

8.1 等待事件

- gc cr block 2-way
- gc cr block 3-way
- gc current block 2-way
- gc current block 3-way
- gc buffer busy

8.2 查看

SELECT event, time_waited, total_waits
FROM v$system_event
WHERE event LIKE 'gc%'
ORDER BY time_waited DESC;

8.3 调优

- 减少 Cache Fusion
- 优化 SQL
- 分区
- 服务

9. Cache Fusion 优化

9.1 减少 Transfer

- 索引
- 分区
- 服务隔离

9.2 节点亲和

- 节点固定
- 服务
- 连接池

9.3 网络优化

- 低延迟
- 高带宽
- HAIP

10. 应用场景

10.1 OLTP

- 不同节点不同数据
- 减少 Cache Fusion
- 服务隔离

10.2 OLAP

- 并行
- Cache Fusion
- 性能

10.3 混合

- 亲和
- 监控
- 优化

11. 监控

11.1 统计

SELECT name, value FROM v$sysstat 
WHERE name LIKE 'gc%' OR name LIKE '%cache%';

11.2 等待

SELECT event, total_waits, time_waited
FROM v$system_event
WHERE event LIKE 'gc%';

11.3 AWR

@?/rdbms/admin/awrrpt.sql

详细见:Oracle AWR 报告深度分析


12. 常见问题

12.1 gc 等待高

- Cache Fusion 多
- SQL 优化
- 服务隔离

12.2 网络瓶颈

- 带宽
- 延迟
- HAIP

12.3 热块

- 单块争用
- 分区
- 反向索引

13. 最佳实践

  1. 服务隔离:节点亲和
  2. 分区:减少传输
  3. 网络:高速
  4. HAIP:冗余
  5. 监控:gc 等待
  6. 优化 SQL:减少
  7. 索引:合理
  8. 文档:架构
  9. 测试:性能
  10. 演练:故障

14. 参考资料

[1] Oracle Real Application Clusters Administration and Deployment Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/racad/