高可用 & 容灾11 分钟阅读
Oracle GoldenGate 经典架构日常运维与故障排查 100 条命令
GoldenGate 经典架构常用于数据库迁移和实时数据同步。Extract 从源库捕获数据变化,Data Pump 负责远端传输,Replicat 在目标库应用;Trail 文件和检查点记录了复制链路的处理位置。
2026年9月15日阅读—点赞—收藏—
dba100oraclescenario
100 条命令系列文章专栏
GoldenGate 经典架构常用于数据库迁移和实时数据同步。Extract 从源库捕获数据变化,Data Pump 负责远端传输,Replicat 在目标库应用;Trail 文件和检查点记录了复制链路的处理位置。
GoldenGate 经典架构常用于数据库迁移和实时数据同步。Extract 从源库捕获数据变化,Data Pump 负责远端传输,Replicat 在目标库应用;Trail 文件和检查点记录了复制链路的处理位置。
Oracle GoldenGate 经典架构示意图
进程 ABEND 或复制延迟时,除了看运行状态,还要对照 Extract、Pump、Replicat 的 Trail 位点、检查点和报告文件。长事务、目标库报错、网络中断,处理方法各不相同。
本文整理了经典架构日常检查、延迟排查和故障处理常用的 100 条命令,内容较多,建议收藏备用。
文中以 Linux 环境下的 GGSCI 为例,进程名、Trail 前缀、数据库账号及复制对象请根据实际环境修改。
先用它找出 STOPPED 或 ABEND 的进程,再对异常进程执行 INFO ... DETAIL。
输出里能看到 Manager 给各进程分配的端口,排查防火墙或端口冲突时很有用。
DETAIL 会列出参数文件、Trail 和检查点。进程显示 RUNNING 但数据不走时,先看这里的位置有没有变化。
SHOWCH 展开的检查点较多,排障时主要关注当前读取和写入的 Trail 序号、RBA。
LAG 是上一次计算值。怀疑数值过期时先执行 SEND EXTRACT ext1, GETLAG。
RESET 不是清空统计,而是统计“本次进程启动以来”的数据量。
Pump 与远端断开时,这里通常能看到连接状态;随后再查目标 Manager 和网络。
SHOWTRANS 看的是当前开放事务。事务持续时间长不一定异常,要结合源库事务确认。
Replicat 的读取检查点长期不动,才说明应用可能停住;只看进程为 RUNNING 不够。
这里的统计从 Replicat 最近一次启动算起,重启前后的数字不能直接相减。
同一前缀可能有多代 Trail。文件还在增长,只能说明上游仍在写,不能说明 Replicat 已经追上。
长事务会阻止 Extract 推进检查点。确认事务来源后,再决定等待、提交还是回滚。
检查点表用于保存 Replicat 位置。目标库迁移或重建前,别漏掉这张表。
GETLAG 会让进程重新计算延迟,随后再执行 LAG EXTRACT 查看新值。
表级统计适合确认某张表有没有捕获到数据。结果为 0 时,再核对 TABLE/MAP 规则和过滤条件。
checkprm 只检查参数语法和部分语义,不会验证数据库账号、表名和网络是否可用。
ABEND 时从报告中第一条 OGG 错误开始看,后面的重复报错常常只是连带结果。
Discard 文件里保存被丢弃记录及原因。文件为空不代表没有错误,还要看参数是否启用了 discard。
INFO TRANDATA 用来确认表级补充日志。更新主键或唯一键的表尤其要检查。
这里核对的是 Replicat 实际使用的检查点表,不要只看表是否存在。
KILL 不走正常停止流程,只在进程无法停止且现场信息已经保存时使用。
跳过事务会造成目标端少数据。执行前记下事务信息,并准备业务核对和补数。
修改 SEQNO 和 RBA 前先保存原检查点。位置填错可能导致重复应用或数据缺口。
处理 ABEND 时,先从报告中找第一条错误,再核对进程停在哪个 Trail 位点。跳事务和修改 Replicat 位点可能造成数据缺口或重复应用,动手前要保存原检查点并明确补数方案。

经典架构之外的 GoldenGate 和数据库命令,也放在 ORA100 · DBA100:
微信端可搜索小程序 「三笠的百令册」。
1$OGG_HOME/ggsci1VERSIONS1SHOW1HISTORY1INFO ALL1INFO ER *1INFO MANAGER1STATUS MANAGER1VIEW GGSEVT1HELP INFO EXTRACT1VIEW PARAMS MGR1-- 修改前备份 dirprm/mgr.prm2EDIT PARAMS MGR1SEND MANAGER STATUS1SEND MANAGER GETPORTINFO DETAIL1SEND MANAGER GETPORTINFO1VIEW REPORT MGR1tail -n 100 $OGG_HOME/dirrpt/MGR.rpt1ss -lntp | grep mgr1ps -ef | grep '[m]gr\|[e]xtract\|[r]eplicat'1du -sh $OGG_HOME/dir*2df -h $OGG_HOME1INFO EXTRACT ext11INFO EXTRACT ext1, DETAIL1INFO EXTRACT ext1, SHOWCH1INFO EXTRACT ext1, TASKS1STATUS EXTRACT ext11LAG EXTRACT ext11STATS EXTRACT ext1, TOTAL1STATS EXTRACT ext1, HOURLY1STATS EXTRACT ext1, RESET1SEND EXTRACT ext1, STATUS1INFO EXTRACT pmp11INFO EXTRACT pmp1, DETAIL1INFO EXTRACT pmp1, SHOWCH1STATUS EXTRACT pmp11LAG EXTRACT pmp11STATS EXTRACT pmp1, TOTAL1STATS EXTRACT pmp1, HOURLY1SEND EXTRACT pmp1, STATUS1SEND EXTRACT pmp1, SHOWTRANS1VIEW REPORT pmp11INFO REPLICAT rep11INFO REPLICAT rep1, DETAIL1INFO REPLICAT rep1, SHOWCH1INFO REPLICAT rep1, TASKS1STATUS REPLICAT rep11LAG REPLICAT rep11STATS REPLICAT rep1, TOTAL1STATS REPLICAT rep1, HOURLY1STATS REPLICAT rep1, RESET1SEND REPLICAT rep1, STATUS1INFO EXTRACT ext1, DETAIL1INFO EXTRACT pmp1, DETAIL1INFO REPLICAT rep1, DETAIL1ls -lh $OGG_HOME/dirdat/aa*1ls -lht $OGG_HOME/dirdat | head -201du -sh $OGG_HOME/dirdat2df -h $OGG_HOME/dirdat1SEND EXTRACT ext1, SHOWTRANS1SEND EXTRACT ext1, SHOWTRANS DURATION 10 MIN1SEND REPLICAT rep1, SHOWTRANS1INFO CHECKPOINTTABLE1LAG ER *1LAG EXTRACT *1LAG REPLICAT *1SEND EXTRACT ext1, GETLAG1SEND EXTRACT pmp1, GETLAG1SEND REPLICAT rep1, GETLAG1STATS EXTRACT ext1, DAILY1STATS REPLICAT rep1, DAILY1STATS EXTRACT ext1, TABLE app.orders, TOTAL1STATS REPLICAT rep1, TABLE app.orders, TOTAL1VIEW PARAMS ext11VIEW PARAMS pmp11VIEW PARAMS rep11$OGG_HOME/checkprm ./dirprm/ext1.prm1$OGG_HOME/checkprm ./dirprm/pmp1.prm1$OGG_HOME/checkprm ./dirprm/rep1.prm1VIEW REPORT ext11VIEW REPORT rep11VIEW DISCARD ext11grep -Ei 'OGG-|ERROR|WARNING|ABEND' $OGG_HOME/ggserr.log | tail -1001DBLOGIN USERIDALIAS oggadmin1INFO TRANDATA app.orders1INFO SCHEMATRANDATA app1LIST TABLES app.*1INFO EXTRACT ext1, DETAIL1sqlplus -s / as sysdba <<'SQL'2SET PAGES 100 LINES 2003SELECT log_mode, force_logging FROM v$database;4SQL1sqlplus -s / as sysdba <<'SQL'2SET PAGES 100 LINES 2003SELECT supplemental_log_data_min FROM v$database;4SQL1sqlplus -s / as sysdba <<'SQL'2SET PAGES 100 LINES 2003SELECT username, account_status FROM dba_users WHERE username='OGGADMIN';4SQL1sqlplus -s / as sysdba <<'SQL'2SET PAGES 100 LINES 2003SELECT owner, table_name FROM dba_tables WHERE owner='GGADMIN' AND table_name='GGS_CHECKPOINT';4SQL1sqlplus -s / as sysdba <<'SQL'2SET PAGES 100 LINES 2203SELECT sid, serial#, username, program, status FROM v$session WHERE upper(program) LIKE '%EXTRACT%' OR upper(program) LIKE '%REPLICAT%';4SQL1-- ogg 软件属主;确认 PORT 未被占用2START MANAGER1-- 确认数据库、凭据和 Trail 可用2START EXTRACT ext11-- 确认目标 Manager 和网络可用2START EXTRACT pmp11-- 确认目标库和检查点表可用2START REPLICAT rep11-- 维护窗口;停止后确认检查点不再推进2STOP EXTRACT ext11-- 维护窗口;先评估待应用数据量2STOP REPLICAT rep11-- 最后手段;先保存报告、事件日志和检查点信息2KILL EXTRACT ext11-- 高风险:会造成数据缺口;须有业务确认和补数方案2START REPLICAT rep1, SKIPTRANSACTION1-- 高风险:先停进程并记录原检查点;seqno、rba 按现场填写2ALTER REPLICAT rep1, EXTSEQNO seqno, EXTRBA rba1-- 先查明 ABEND 原因;不要循环盲目重启2VIEW REPORT rep13VIEW GGSEVT4START REPLICAT rep1