共计 1173 个字符,预计需要花费 3 分钟才能阅读完成。
由于虚拟机宿主机重启,导致很多虚拟机服务需要重点关注,其中一个 DG 的从库和另一个 report 库有 OGG 同步,所以这里再系统恢复后检查 OGG 状态的时候,果然目标端的 REPLICAT 进程处于 abend 状态,重启也无效,具体信息如下:
一、错误信息
目标端 ggserr.log
2018-07-29 10:15:56 INFO OGG-06510 Oracle GoldenGate Delivery for Oracle, reprpt01.prm: Using the following key columns for target table GGS.T_EMP.
2018-07-29 10:15:56 ERROR OGG-01163 Oracle GoldenGate Delivery for Oracle, reprpt01.prm: Bad column length (21) specified for column BANK in table CU.T_EMP, maximum allowable length is 20.
2018-07-29 10:15:56 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, reprpt01.prm: PROCESS ABENDING.
二、错误原因
从错误日志看出这里由于源端和目标端的表结构不一致,导致 ogg 进程启动失败。这种一般是由于源改了表结构,目标端没改,在源和目标进程不重启的情况下不影响同步,一旦重启进程则无法直接同步,即报如上错误。
三、处理过程
1. 排查源端和目标端的表结构
(果然表结构不一致,目标端通过 alter table GGS.T_EMP modify BANK varchar2(21); 更改后重启目标端进程,依旧报错)
2. 通过源端和目标端建立表定义文件的方式完成同步
源端配置
1) 配置表定义文件
GGSCI (cus) 1> edit params defen.prm
defsfile /ogg/dirdef/cus.def
userid ggs ,password ggspass
table CUS.t_emp;
defgen paramfile ./dirprm/defgen.prm
在 dirdef 目录生成文件 dirdef/cus.def,具体内容如下
后面内容就不截图了,包含现有表结构的实际定义内容等。
2) 源端的表定义文件 scp 到目标端的./dirdef 目录下
目标端配置
3) 目录端的 replicat 进程配置文件添加内容
GGSCI (cusreport) 2> edit params REPRPT01
sourcedefs /ogg/dirdef/cus.def override
## 切记一定要假如 override,否则不会生效
4) 重启目标端
GGSCI (cusreport) 3> start REPRPT01
至此 OGG 数据同步恢复。
: