DBAtlas · 数据库运维图谱

Oracle GoldenGate 日常运维与故障场景(Microservices 21c / 23ai)

Oracle难度: 高级耗时: 5 分钟(检查)– 2 小时(升级、添加表)

已安装的 GoldenGate Microservices 复制的日常运维和故障恢复 runbook(安装请参阅 GoldenGate 安装指南)。如果不确定该做什么,请从“健康与延迟检查”开始:只读诊断会引导你找到正确的场景 —— Extract 和 Replicat ABEND(report、discard、OGG-xxxxx 错误)、将已有数据的表加入复制(一致性 SCN + AFTERCSN)、移除表、单表重新同步(resync)、trail 清理(Purge Trail)、从 SCN 重新定位 Extract、版本升级/补丁,以及源端 Data Guard switchover/failover 后继续运行 Extract。每个场景都按 诊断 → 安全措施 → 执行 → 验证 的顺序组织。

架构: 源服务器(源 deployment、Integrated Extract、Distribution Path)+ 目标服务器(目标 deployment、Parallel Replicat)

场景

  • 健康与延迟检查(一切正常吗?) — 只读:Service Manager 和各 microservice、INFO ALL、lag、STATS、heartbeat 延迟、数据库中的 capture 状态以及 ggserr.log;不做任何更改。如果不确定该做什么,请从这里开始。
  • Extract ABENDED(已停止,报错) — 源端 Extract 处于 ABENDED 或不断重启:根据 report 文件中的 OGG-xxxxx 错误找出原因(连接、缺少归档日志、log mining、权限、磁盘)并排除,然后让 Extract 从中断处继续启动。源数据库不受影响;延迟会累积。
  • Replicat ABENDED(无法在目标端应用) — 目标端 Replicat 无法应用某个事务:从 report 和 discard 文件中找出表、操作和错误;修正数据或用临时 REPERROR 跳过,然后让 Replicat 从中断处继续启动。目标端保持打开;延迟会累积。
  • 将已有数据的表加入复制(初始加载 + AFTERCSN) — 在不中断的情况下将一张已存在且包含数据的表加入正在运行的复制:ADD TRANDATA、基于一致性 SCN 的 expdp/impdp,以及一个只为该表应用此 SCN 之后变更的独立 Replicat(AFTERCSN)。其他表继续正常复制。
  • 将表从复制中移除 — 该表将不再复制:在 Extract 中使用 TABLEEXCLUDE(或删除 TABLE 行),在 Replicat 中使用 MAPEXCLUDE,必要时执行 DELETE TRANDATA。进程会短暂重启。
  • 重新同步单张表(resync) — 某张表在目标端的数据与源端出现不一致(手动修改、跳过的错误、初始加载不完整):从源端按一致性 SCN 重新加载该表,并由一个临时 Replicat 应用该 SCN 之后的变更。其他表不受影响。
  • trail 文件占满磁盘:清理(Purge Trail) — trail 目录不断增长或磁盘即将写满:查看哪些文件正在被读取,使用 USECHECKPOINTS 定义 Purge Trail 任务(相当于 Classic 中的 PURGEOLDEXTRACTS);紧急情况下手动删除已读取的文件。
  • 将 Extract 重新定位到指定 SCN — 需要让 Extract 从某个 SCN 重新开始(trail 丢失、起始点错误、目标端回退):通过 ALTER EXTRACT … SCN 和 ETROLLOVER 从新的 trail 文件启动。相同的数据可能会再次到达目标端。
  • GoldenGate 版本升级 / 补丁(Microservices) — 迁移到新的 GoldenGate 版本或补丁:out-of-place(安装新 home,通过 REST 将 Service Manager 和各 deployment 迁移到新 home)或使用 OPatch in-place。Extract/Replicat 会短暂停止;回退方式是切回旧 home。
  • 源端 Data Guard switchover/failover 后继续运行 Extract — 源数据库发生了 switchover 或 failover;Extract 必须连接新的 primary 并从 checkpoint 继续:检查连接(credential alias/服务)、capture 状态、HANDLEDLFAILOVER 以及可能的数据不一致。

开始之前

  • GoldenGate Microservices 已按安装指南安装:源端 … deployment 中有 Integrated Extract … 和 Distribution Path …,目标端 … deployment 中有 Parallel Replicat …;credential alias 为 ggsrc/ggsrc_pdb(源端)和 ggtgt(目标端)。
  • 已掌握两个 deployment 的 oggadmin 口令(各步骤会提示输入;不写入脚本)。… 用于初始加载的两个 PDB 的 SYSTEM 口令以及安装时创建的 OGG_DP directory(…)已准备好。…
  • 两台服务器上的 Service Manager systemd 服务(OracleGoldenGate)都在运行。
  • 已开立变更单/维护窗口:…升级期间 Extract、Distribution Path 和 Replicat 会停止;延迟会累积,完成后逐渐消化…Extract 回退后,相同的事务可能再次到达目标端;已与应用负责人商定冲突处理方案…用 REPERROR 跳过的操作在目标端会缺失;已获得业务负责人批准…进程会短暂重启…。

指南阶段

  • 状态:进程、延迟和服务(只读) — 检查 Service Manager 和各 microservice 端口 · 显示源端进程、Extract 延迟和 Distribution Path(源端) · 显示目标端进程和 Replicat 延迟(目标端) · 通过 heartbeat 测量端到端延迟(目标端) · 检查源数据库中的 capture 状态和所需归档日志(源端) · 扫描错误日志(源端) …
  • 1. 诊断:Extract 为什么停止? — 显示 Extract 状态和 report 中的错误(源端) · 检查数据库中的 capture 状态和归档日志(源端)
  • 2. 安全措施 — 备份参数、checkpoint 和 report 文件(源端)
  • 3. 执行:排除原因并启动 Extract — 从 RMAN 备份还原缺失的归档日志(源端) · 排除原因 · 启动 Extract 并监控(源端)
  • 4. 验证与后续 — 验证延迟正在消化(源端) · 预防根本原因(源端)
  • 1. 诊断:Replicat 停在哪个操作上? — 显示 Replicat 状态、report 和 discard 文件(目标端) · 在目标端和源端比对出错的行
  • 2. 安全措施 — 备份参数、checkpoint 和 report 文件(目标端)
  • 3. 执行:修正数据并启动 Replicat — 修正目标端的数据 · 临时将错误重定向到 discard 文件:REPERROR(目标端) · 启动 Replicat(目标端)
  • 4. 验证与后续 — 验证 Replicat 正在前进(目标端) · 删除临时 REPERROR(目标端)
  • 1. 诊断:该表是否适合复制? — 在源端检查该表(源端) · 显示 supplemental logging 状态(源端) · 在目标端检查该表(目标端)
  • 2. 安全措施 — 备份参数和 checkpoint 文件(源端) · 备份参数和 checkpoint 文件(目标端) · 备份目标表(目标端)
  • 3. 执行:加载该表并使用其专用 Replicat 启动 — 在表级启用 supplemental logging(源端) · 将该表从主 Replicat 中排除:MAPEXCLUDE(目标端) · 从主 Replicat 中删除该表的显式 MAP 行(目标端) · 将该表加入 Extract(源端) · 仅为该表添加新的 Replicat(目标端) · 按一致性 SCN 导出该表(源端) …
  • 4. 验证与后续 — 比较行数(源端) · 检查行数和新的 Replicat(目标端)
  • 1. 诊断:该表在哪里定义? — 显示该表在参数文件中的位置及其 supplemental logging(源端) · 显示该表在 Replicat 中的映射(目标端)
  • 2. 安全措施 — 备份参数和 checkpoint 文件(源端) · 备份参数和 checkpoint 文件(目标端)
  • 3. 执行:将该表从 Extract 和 Replicat 中移除 — 将该表从 Extract 中移除(源端) · 等待 trail 中剩余的记录应用完毕(目标端) · 将该表从 Replicat 中移除(目标端) · 删除该表的 MAP 行(目标端) · 移除表级 supplemental logging(源端)
  • 4. 验证 — 验证该表不再被处理(源端)
  • 1. 诊断:trail 占用了多少空间,由谁读取? — 显示 trail 目录和文件(源端) · 显示 trail 目录和 Replicat 读取的位置(目标端)
  • 2. 执行:定义 Purge Trail 任务 — 在源 deployment 中定义 Purge Trail 任务 · 在目标 deployment 中定义 Purge Trail 任务
  • 3. 紧急情况:手动删除已读取的 trail 文件 — 删除已读取的 trail 文件
  • 1. 诊断:能否回退到该 SCN? — 显示 Extract 的当前位置(源端) · 检查 capture 的起始 SCN 和归档日志(源端)
  • 2. 安全措施 — 备份参数、checkpoint 和 report 文件(源端)
  • 3. 执行:将 Extract 定位到该 SCN — 停止 Extract,定位到该 SCN,并从新的 trail 文件启动(源端)
  • 4. 验证 — 验证 Extract 正从新位置前进(源端) · 监控目标端的冲突(目标端)
  • 1. 诊断:当前版本与准备工作 — 记录当前版本、补丁和进程(源端) · 记录当前版本、补丁和进程(目标端)
  • 2. 安全措施 — 备份 deployment 和 Service Manager 目录(源端) · 备份 deployment 和 Service Manager 目录(目标端)
  • 3. 执行:停止进程并升级 — 正常停止进程(源端) · 正常停止进程(目标端) · 安装新的 GoldenGate home(源端) · 安装新的 GoldenGate home(目标端) · 将 Service Manager 和 deployment 迁移到新 home(源端) · 使用 OPatch 应用补丁(源端) …
  • 4. 验证 — 启动进程并验证版本(源端) · 启动进程并验证版本(目标端) · 回退(如需要)
  • 1. 诊断:新 primary 与 Extract 的连接 — 检查新 primary 的角色和 capture 状态(新 primary) · 显示 Extract 状态和 credential alias(源端)
  • 2. 安全措施 — 备份参数、checkpoint 和 report 文件(源端)
按您的环境打开分步计划 →