Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 数据库概述
  • MySQL

  • Redis

  • Oracle

    • Oracle概述
    • Oracle版本与部署选型
    • Oracle安装配置与客户端工具
    • Oracle体系结构与实例数据库
    • Oracle内存结构SGA与PGA
    • Oracle进程与后台任务
    • Oracle存储结构与表空间
    • Oracle数据类型与字符集
    • Oracle Schema对象与数据建模
    • SQL基础与Oracle语法特性
    • PLSQL基础与包过程函数
    • Oracle事务与一致性读
    • Oracle锁闩锁与并发控制
    • Undo Redo与归档日志
    • Oracle索引结构与设计
    • 执行计划与DBMS_XPLAN
    • 优化器统计信息与SQL调优
    • AWR ASH与性能诊断
    • Oracle等待事件与故障排查
    • RMAN备份恢复与闪回技术
    • Data Guard与灾备架构
      • 1. 学习目标与定位
      • 2. 核心概念总览
      • 3. 底层原理详解
      • 4. 关键机制拆解
        • 4.1. Redo 传输与应用链路
        • 4.2. 物理备库、逻辑备库和读能力
        • 4.3. Broker、Switchover 与 Failover
        • 4.4. FSFO 与灾备演练
      • 5. 功能模块细节补充
        • 5.1. Primary Database
        • 5.2. Physical Standby
        • 5.3. Logical Standby
        • 5.4. Redo Transport
        • 5.5. Redo Apply
        • 5.6. Data Guard Broker
        • 5.7. Switchover
        • 5.8. Failover
        • 5.9. Fast-Start Failover
      • 6. 开发人员重点提醒
      • 7. 运维人员重点提醒
      • 8. 典型问题与排查
      • 9. 实践建议与检查清单
      • 10. 阶段小结
    • RAC集群与服务高可用
    • ASM存储与文件管理
    • Multitenant CDB与PDB
    • 分区表与VLDB实践
    • 数据泵SQLLoader与数据迁移
    • Oracle安全审计与权限治理
    • Oracle开发连接池与JDBC实践
    • JSON向量与多模型能力
    • Oracle运维规范与面试设计题
目录

Data Guard与灾备架构

Data Guard 是 Oracle 灾备体系的核心能力,通过物理或逻辑备库、Redo 传输、应用和 Broker 管理实现故障切换与读写隔离。灾备设计要明确 RPO、RTO 和演练流程。

# 1. 学习目标与定位

维度 内容
难度层级 高可用到专家
核心目标 从底层运行链路理解本篇主题,能把概念、SQL、指标、故障和工程取舍连起来
适合人群 开发人员关注主备切换期间连接、读旧数据和幂等;运维人员关注传输、应用、保护模式和切换演练。

# 2. 核心概念总览

Data Guard与灾备架构
├─ Primary Database
├─ Physical Standby
├─ Logical Standby
├─ Redo Transport
├─ Redo Apply
├─ Data Guard Broker
├─ Switchover
├─ Failover
└─ Fast-Start Failover

这张图只用来定位本章范围。正文不会把每个词机械拆成固定问答,而是按 Oracle 的真实运行机制解释它们之间如何协作、在哪里影响开发、在哪里影响运维。

# 3. 底层原理详解

Data Guard 的基础是 Redo。主库产生 Redo,传输到备库,备库应用 Redo 保持数据同步。物理备库以块级一致性复制数据库,逻辑备库以 SQL 应用方式提供更灵活但更复杂的能力。

保护模式体现数据安全与性能的取舍。最大保护、最大可用、最大性能对应不同同步要求、提交延迟和故障行为。生产设计必须先明确 RPO,而不是先搭环境。

Switchover 是计划内角色切换,Failover 是灾难场景切换。二者对数据一致性、应用连接、回切流程和演练要求不同。

# 4. 关键机制拆解

# 4.1. Redo 传输与应用链路

主库 LGWR 或归档进程将 Redo 传输到备库,备库接收后写入 standby redo log,再由 MRP 等进程应用。延迟可能发生在产生、传输、接收或应用任一环节。

排查 Data Guard 延迟不能只 ping 网络,要看 transport lag、apply lag、日志序列、备库 IO、并行应用和主库日志切换。

# 4.2. 物理备库、逻辑备库和读能力

物理备库保持与主库物理一致,适合灾备和 Active Data Guard 只读查询。逻辑备库可以打开读写并做部分对象过滤,但数据类型、DDL 和 SQL Apply 兼容性要仔细评估。

读备库适合报表分流,但开发人员要理解读延迟和只读限制。读到旧数据不是数据库错,而是架构一致性模型的一部分。

# 4.3. Broker、Switchover 与 Failover

Data Guard Broker 提供统一配置、监控和切换管理,能减少手工命令错误。Switchover 要求主备状态健康,适合维护演练;Failover 用于主库不可用,可能涉及数据损失判断。

切换不是 DBA 一个人的动作。应用连接、服务漂移、缓存失效、批处理暂停、监控静默和业务验收都应写入剧本。

# 4.4. FSFO 与灾备演练

Fast-Start Failover 可以在满足条件时自动故障切换,但自动化必须建立在可靠监控、观察者、网络隔离策略和业务接受的 RPO 上。

灾备演练要覆盖切换、回切、备份、数据校验、应用重连和异常中断。只演示命令成功,不等于灾备能力可靠。

# 5. 功能模块细节补充

本节围绕概念图中的模块逐个补充底层细节,重点讲它们在 Oracle 运行链路中的位置和相互关系,而不是按固定角色模板拆分。

# 5.1. Primary Database

Primary Database 是生产读写入口,也是 Redo 产生源。它的提交路径、日志切换频率、归档能力和网络传输状态会直接决定备库延迟;主库设计不稳定,备库只能复制这种不稳定。

# 5.2. Physical Standby

Physical Standby 以块级方式保持与主库一致,通常通过 Redo Apply 重放主库变更。它适合灾备、只读报表和快速角色切换;如果开启只读能力,也要接受读到的数据可能落后于主库。

# 5.3. Logical Standby

Logical Standby 通过 SQL Apply 将 Redo 转换为逻辑 SQL 变更,允许备库在一定范围内打开读写并做对象过滤。它比物理备库灵活,但对数据类型、DDL、对象兼容性和应用语义要求更高。

# 5.4. Redo Transport

Redo Transport 属于日志、检查点或恢复链路。Redo 让提交后的修改可以在崩溃后重放,归档让介质恢复和 Data Guard 有连续日志,检查点让恢复起点前移;任何一个环节异常都可能影响写入和恢复目标。

# 5.5. Redo Apply

Redo Apply 属于日志、检查点或恢复链路。Redo 让提交后的修改可以在崩溃后重放,归档让介质恢复和 Data Guard 有连续日志,检查点让恢复起点前移;任何一个环节异常都可能影响写入和恢复目标。

# 5.6. Data Guard Broker

Data Guard Broker 把主备配置、状态检查、切换和故障处理封装成统一控制面。它能减少手工命令错误,但不能替代架构判断;切换前仍要确认日志缺口、保护模式、服务漂移和应用验收。

# 5.7. Switchover

Switchover 是计划内主备角色互换,要求主库和备库都处于健康状态,日志没有缺口。它常用于补丁、机房维护和灾备演练;成功标准不只是角色切换完成,还包括应用服务、只读链路、监控和备份策略同步切换。

# 5.8. Failover

Failover 是主库不可用时的灾难切换动作,可能伴随数据损失判断、原主库隔离、新主库开放和应用流量迁移。Failover 后最难的往往是回切和数据一致性确认,因此必须提前准备 flashback、备份和重建流程。

# 5.9. Fast-Start Failover

Fast-Start Failover 通过 Observer 和 Broker 在满足条件时自动触发故障切换。它缩短人工判断时间,但也放大误判风险;网络隔离、观察者部署、保护模式、自动切换阈值和业务接受的数据损失窗口必须提前设计并反复演练。

# 6. 开发人员重点提醒

  • 应用使用服务名和合理连接超时,支持重试和幂等。
  • 读备库查询要接受延迟语义,不用于强一致读后写。
  • 切换演练时验证缓存、任务和消息消费。

# 7. 运维人员重点提醒

  • 监控 transport lag、apply lag、日志序列和 Broker 状态。
  • 定期做 switchover 和 failover 演练。
  • 归档、standby redo log 和网络链路要有容量基线。

# 8. 典型问题与排查

  • 备库延迟:分段判断产生、传输、接收、应用瓶颈。
  • 切换失败:检查 Broker 状态、日志缺口、监听服务和数据库角色。
  • 回切困难:检查 flashback、备份和新主库日志链。

# 9. 实践建议与检查清单

  • RPO/RTO 明确
  • Broker 状态健康
  • 延迟监控可用
  • 切换剧本完整
  • 应用重连验证通过
  • 回切方案可执行

# 10. 阶段小结

本篇的学习重点不是记住术语,而是能把底层机制、业务语义和生产证据连起来。读完本篇后,应该能解释关键组件如何协作、常见问题为什么发生、开发侧如何避免制造风险、运维侧如何用指标和日志把问题定位到具体链路。

上次更新: 2026/06/25, 15:30:11
RMAN备份恢复与闪回技术
RAC集群与服务高可用

← RMAN备份恢复与闪回技术 RAC集群与服务高可用→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式