← 返回题目列表

Oracle Data Guard 是什么?物理备库和逻辑备库有什么区别?

高频 中等 第 13 / 32 题 更新于 2026/07/29
OracleData Guard物理备库高可用

简化版

Data Guard 是 Oracle 的主备容灾方案,通过传输和应用 Redo 把主库变更同步到备库。物理备库基于块级恢复,结构和主库几乎一致;逻辑备库把 Redo 转换为 SQL 应用,灵活但兼容性和延迟更复杂。面试重点是保护模式、日志传输、Redo Apply、Switchover 和 Failover。

详细版

Data Guard 常用于容灾和高可用。主库产生 Redo,传输到备库,备库应用日志保持同步。

核心概念:

  • Primary Database:主库,对外提供写服务。
  • Standby Database:备库,接收并应用日志。
  • Physical Standby:物理备库,块级一致。
  • Logical Standby:逻辑备库,SQL Apply。
  • Switchover:计划内主备切换。
  • Failover:主库故障后的故障切换。

它和 RAC 不同:RAC 解决同城多实例访问同一数据库,Data Guard 更偏跨机房容灾和主备复制。

完整版教学

一、Data Guard 解决的是容灾复制

单机数据库再稳定,也无法避免机房故障、存储故障、误操作等风险。Data Guard 的目标是准备一个或多个备库,在主库故障时能接管业务。

它的基本流程是:主库产生 Redo,传输到备库,备库应用 Redo,让备库持续追赶主库。

Primary -> Redo Transport -> Standby -> Redo Apply

记忆钩子:Data Guard 的核心不是“复制表”,而是“传输和应用 Redo”。

二、物理备库是最常见形态

物理备库通过 Redo Apply 保持和主库块级一致。它的数据文件结构和主库基本相同,恢复可靠性和兼容性好,是生产容灾中最常见的模式。

物理备库可以用于灾备,也可以在某些模式下承担读查询,减轻主库压力。但读写能力和授权能力要结合具体部署和版本能力评估。

物理备库的优点是简单可靠,缺点是灵活性较弱,因为它几乎就是主库的物理副本。

三、逻辑备库更灵活但更复杂

逻辑备库会把 Redo 转换为 SQL 语句应用到备库。因为是逻辑层应用,它可以允许备库有一些不同对象或额外索引,也可能用于报表和迁移场景。

但 SQL Apply 对数据类型、对象类型和特性兼容性更敏感,延迟和冲突处理也更复杂。

类型应用方式优点风险
物理备库Redo Apply可靠、块级一致灵活性较弱
逻辑备库SQL Apply可做逻辑差异兼容性和延迟复杂

面试中优先讲物理备库,再补逻辑备库的适用边界。

四、保护模式决定数据安全和性能取舍

Data Guard 有不同保护模式,本质是在数据零丢失、性能和可用性之间取舍。同步传输更安全,但对网络延迟更敏感;异步传输性能更好,但故障时可能丢失少量数据。

最大保护:优先零丢失,主库可用性压力最大
最大可用:尽量零丢失,异常时可降级
最大性能:异步优先,性能好但可能有 RPO

面试回答要说清 RPO 和 RTO:能丢多少数据,多久恢复服务。

五、Switchover 和 Failover 要区分

Switchover 是计划内切换,比如机房维护时把主库和备库角色互换。它要求主备状态健康,目标是无损或低风险切换。

Failover 是主库故障后的应急切换,可能伴随数据丢失,取决于保护模式和日志同步状态。

Switchover: 主库还活着,计划切换
Failover: 主库故障,备库接管

切换后还要考虑应用连接串、监听、服务名、DNS 或负载均衡切换。

六、Data Guard 和 RAC 不解决同一个问题

RAC 是多个实例访问同一个数据库,解决节点级高可用和扩展能力,通常在同城低延迟环境。Data Guard 是主备数据库复制,解决数据库或机房级容灾。

方案关注点典型场景
RAC多实例共享数据库同城高可用、节点故障
Data Guard主备复制和容灾异地灾备、主备切换

很多大型系统会组合 RAC 和 Data Guard:主站 RAC 提供高可用,异地 Data Guard 做容灾。

七、常见误区与追问

  • 误区:Data Guard 和 RAC 是一回事。 RAC 是多实例共享存储,Data Guard 是主备复制容灾。
  • 误区:有备库就一定零丢失。 是否零丢失取决于保护模式、同步方式和故障时日志状态。
  • 误区:逻辑备库总是比物理备库高级。 逻辑备库灵活但兼容性复杂,物理备库更常用于容灾。
  • 追问:Data Guard 复制的核心是什么? 主库 Redo 传输到备库并应用。
  • 追问:Switchover 和 Failover 区别? 前者计划内角色切换,后者故障后应急接管。
  • 追问:如何衡量容灾能力? 看 RPO 数据丢失窗口和 RTO 恢复时间。

八、面试中可以这样落地

可以设计一个主备容灾方案:主库开启归档和强制日志,配置物理备库,Redo 通过专线传输,备库持续 Redo Apply。日常监控传输延迟和应用延迟,定期演练 Switchover。

主库写入 -> 产生 Redo -> 传输到备库 -> 备库应用 -> 监控 lag

如果业务要求零丢失,就讨论同步传输和网络延迟;如果更看重性能,就讨论最大性能模式和可接受 RPO。

九、加强记忆

Data Guard 记住“主库产 Redo,备库收 Redo,应用 Redo”。物理备库可靠,逻辑备库灵活;Switchover 是计划切,Failover 是故障切;RAC 管同城多实例,Data Guard 管主备容灾。把 RPO/RTO 带上,答案就像真实架构设计。