单实例 / RAC / Standby 架构对比
单实例 / RAC / Standby 架构对比
适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
Oracle 三种典型部署架构各有侧重:单实例、RAC、Standby[1]。
| 架构 | 主要目标 | 节点数 | 共享存储 | 复杂度 |
|---|---|---|---|---|
| 单实例 | 简单可靠 | 1 | 否 | 低 |
| RAC | 高可用 + 扩展 | 2+ | 是 | 高 |
| Standby | 灾难恢复 | 1 主 + N 备 | 否 | 中 |
2. 单实例架构
+-----------------+ +-----------+
| 单节点实例 | <--> | 本地存储 |
| (SGA + 进程) | | (Data/Redo|
+-----------------+ | Control) |
+-----------+
特点:
- 单点故障:节点宕机即停服
- 实施简单:维护成本低
- 性能上限:受单节点硬件限制
- 适用:中小型业务、开发测试环境
3. RAC(Real Application Clusters)架构
3.1 拓扑
+--------+ +--------+
| Node 1 | | Node 2 | ... N 节点
| Inst 1 | | Inst 2 |
+---+----+ +---+----+
| |
+-------+-------+
|
+-------+-------+
| 共享存储 |
| (ASM/共享卷) |
+---------------+
3.2 关键组件
| 组件 | 作用 |
|---|---|
| Clusterware | 集群管理(OHASD、CRSD) |
| ASM | 共享存储管理 |
| 私有网络 | Cache Fusion 数据传输 |
| 公共网络 | 客户端访问 |
| SCAN | Single Client Access Name,统一访问点 |
| VIP | Virtual IP,故障切换 |
3.3 Cache Fusion
RAC 多实例共享数据时,通过私有网络传输数据块[2]:
Node 1 要读 block X(在 Node 2 缓存中):
1. Node 1 向 Node 2 的 LMS 进程请求
2. Node 2 通过私有网络发送 block X
3. Node 1 缓存该块
4. 若是脏块,需协调锁资源
3.4 RAC 优缺点
优点:
- 高可用:节点故障自动切换
- 横向扩展:增加节点提升吞吐
- 透明切换:客户端无需重连(VIP/SCAN)
缺点:
- 实施复杂
- Cache Fusion 开销(私有网络延迟敏感)
- 共享存储成本高
4. Standby(Data Guard)架构
4.1 拓扑
+----------+ +-----------+
| Primary | Redo Log 同步 | Standby |
| Instance | --------------> | Instance |
| + DB | | + DB |
+----------+ +-----------+
4.2 Standby 类型
| 类型 | 同步方式 | 用途 |
|---|---|---|
| 物理 Standby | Redo Apply(块级别) | 高可用、备份 |
| 逻辑 Standby | SQL Apply | 报表、查询 |
| 快照 Standby | 暂停应用,可读写 | 测试 |
4.3 保护模式
| 模式 | 数据丢失风险 | 性能影响 |
|---|---|---|
| Maximum Protection | 零丢失 | 高(同步写) |
| Maximum Availability | 零丢失(除非故障) | 中 |
| Maximum Performance | 可能少量丢失 | 低(异步) |
-- 查看保护模式
SELECT protection_mode, protection_level
FROM v$database;
5. 三种架构对比
| 维度 | 单实例 | RAC | Standby |
|---|---|---|---|
| 节点故障 | 服务中断 | 自动切换 | 手动/自动切换 |
| 扩展能力 | 垂直扩展 | 水平扩展 | 不能扩展 |
| 数据复制 | 无 | 共享存储 | Redo 同步 |
| 实施成本 | 低 | 高 | 中 |
| 维护难度 | 低 | 高 | 中 |
| 适用场景 | 中小业务 | 高并发核心 | 灾备/查询分流 |
6. 混合架构
实际生产中常组合使用:
主中心:RAC(2 节点)
|
| Redo 同步
▼
灾备中心:单实例 Standby(FSFO 自动切换)
优势:
- 主中心高可用(RAC)
- 异地灾备(Standby)
- 自动故障切换(Fast-Start Failover)
7. 常见坑与排错
7.1 RAC 节点间时间不同步
现象:alert log 报时间偏差警告。
修复:
# 配置 NTP
yum install ntp
systemctl start ntpd
# /etc/ntp.conf 指向同一时间源
7.2 RAC 私有网络延迟过大
现象:gc cr request、gc current request 等待严重。
排查:
SELECT event, total_waits, time_waited
FROM v$system_event
WHERE event LIKE 'gc%';
修复:
- 使用万兆私有网络
- 优化 SQL 减少 cache 传输
- 考虑业务分割到不同节点
7.3 Standby 落后过多
现象:v$archive_dest 显示 GAP。
修复:
-- 检查 GAP
SELECT * FROM v$archive_gap;
-- 使用 RMAN 增量备份补 GAP
rman target /
RMAN> BACKUP INCREMENTAL FROM SCN <start_scn> DATABASE FORMAT '/tmp/inc_%U';
-- 传到 standby
RMAN> RECOVER DATABASE NOREDO;
8. 最佳实践
- RAC 节点数 2-4 个最佳:超过 4 节点 Cache Fusion 开销大
- 私有网络专用:使用独立交换机/网卡
- Standby 配置 Fast-Start Failover:减少故障切换时间
- Active Data Guard:Standby 可读,分担主库压力
- 关键业务组合架构:RAC + Standby + 备份
- 定期灾备演练:验证 Standby 可用性
9. 参考资料
[1] Oracle Database Concepts 19c, “Database Architecture” https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/oracle-database-architecture.html
[2] Oracle Real Application Clusters Administration and Deployment Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/racad/
[3] Oracle Data Guard Concepts and Administration 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/