单实例 / 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 数据传输
公共网络客户端访问
SCANSingle Client Access Name,统一访问点
VIPVirtual 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 类型

类型同步方式用途
物理 StandbyRedo Apply(块级别)高可用、备份
逻辑 StandbySQL Apply报表、查询
快照 Standby暂停应用,可读写测试

4.3 保护模式

模式数据丢失风险性能影响
Maximum Protection零丢失高(同步写)
Maximum Availability零丢失(除非故障)
Maximum Performance可能少量丢失低(异步)
-- 查看保护模式
SELECT protection_mode, protection_level 
FROM v$database;

5. 三种架构对比

维度单实例RACStandby
节点故障服务中断自动切换手动/自动切换
扩展能力垂直扩展水平扩展不能扩展
数据复制共享存储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 requestgc 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. 最佳实践

  1. RAC 节点数 2-4 个最佳:超过 4 节点 Cache Fusion 开销大
  2. 私有网络专用:使用独立交换机/网卡
  3. Standby 配置 Fast-Start Failover:减少故障切换时间
  4. Active Data Guard:Standby 可读,分担主库压力
  5. 关键业务组合架构:RAC + Standby + 备份
  6. 定期灾备演练:验证 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/