单实例 / 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. 最佳实践

  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/