第 9 章 GoldenGate 错误分析与处理
新传输过来的队列如 Replicat 无法自动滚动到下一个队列,需要通过如下命令手工滚动:
示例 9-8:
alter replicat [replicat_name], EXTSEQNO ##### EXTRBA 0
等待 Replicat 处理到结尾没有延迟时,可以关闭 HANDLECOLLISIONS 和恢复原来
的 GROUPTRANSOPS 和 MAXTRANSOPS 参数。
⑤ 重新启动 Replicat 即可恢复正常复制。
9.1.4 网络故障
如果 MGR 进程参数文件里面设置了 autorestart 参数,GoldenGate 可以自动重启,无
需人工干预。
当网络不稳定或者发生中断时, GoldenGate 负责产生远地队列的 Pump 进程会自动
停止。 此时,MGR 进程会定期根据 mgr.prm 里面 autorestart 设置自动启动 Pump 进程以试
探 网络 是否 恢复 。 在 网络 恢复 后 , 负 责 产生 远 程 队列 的 Pump 进 程 会 被 重 新 启 动 ,
GoldenGate 的检查点机制可以保证进程继续从上次中止复制的日志位置继续复制。
需要注意的是,因为源端的抽取进程(Capture)仍然在不断地抓取日志并写入本地
队列文件,但是 Pump 进程不能及时把本地队列搬动到远地,所以本地队列文件无法被自
动清除而堆积下来,需要保证足够容量的存储空间来存储堆积的队列文件。计算公式如下。
存储容量单位时间产生的队列大小×网络故障恢复时间
MGR 定期启动抓取和复制进程参数配置参考:
示例 9-9:
GGSCI > edit param mgr
port 7809
autorestart er
*
,waitminutes 3,retries 5,RESETMINUTES 60
每 3 分钟重试一次,5 次重试失败以后等待 60 分钟,然后重新试三次。
9.1.5 Replicat 进程常见异常
对于目标数据库,投递进程 repXX 如果变为 abended,则可以通过在 GGSCI 中使用
view report 命令查看报告,可以通过搜索 ERROR 快速定位错误。
复制进程的错误通常为目标数据库错误,比如:
数据库临时停机。
目标表空间存储空间不够。
目标表出现不一致。
可以根据报告查看错误原因,排除后重新启动 rep 进程即可。
需要注意一点:往往容易忽略 UNDO 表空间。如果 DML 语句中包含了大量的
UPDATE 和 DELETE 操作,则目标端 UNDO 的生成速度会很快,有可能填满 UNDO 表空