- A+
如果目标端repa进程意外终止,如何解决(数据同步失败)
在源端撤销最近的DML/DDL操作,使两边数据同步
让源端和目标端的数据回到相同的起点,可以在源端撤销最近的ddl或者dml操作,或者在目标端增加与源端相同的ddl、dml操作。总之只要能达到让源端和目标端的数据状态一致即可。
在源端关闭两个进程,删除队列
停止exta和dpea进程:
GGSCI (edsir1p8.us.oracle.com) 21> stop exta
GGSCI (edsir1p8.us.oracle.com) 21> stop dpea
删除源端抽取队列:
GGSCI >delete exttrail /home/oracle/software/Goldengate/dirdat/ra
[oracle@edsir1p8-PROD4 dirdat]$ cd /home/oracle/software/Goldengate/dirdat[oracle@edsir1p8-PROD4 dirdat]$ rm -rf ra*
重新为两个进程指定队列
add exttrail /home/oracle/software/Goldengate/dirdat/ra,ext exta,MEGABYTES 20
add rmttrail /home/oracle/software/Goldengate/dirdat/ra,ext dpea,MEGABYTES 20
在目标端关闭,删除repa进程
GGSCI (edsir4p1.us.oracle.com) 149> stop repa
GGSCI (edsir4p1.us.oracle.com) 149> delete rep repa
[oracle@edsir4p1-CPROD4 ~]$ cd /home/oracle/software/Goldengate/dirdat [oracle@edsir4p1-CPROD4 dirdat]$ rm -rf ra*重新创建repa进程
创建repa进程:
GGSCI>add rep repa, exttrail /home/oracle/software/Goldengate/dirdat/ra,nodbcheckpoint
检查repa进程参数文件:
GGSCI (edsir4p1.us.oracle.com) 151> edit param repa
repa进程原来的参数文件应该还在,之前的操作没有对repa进程的参数文件做任何的改动,确认一遍repa进程的参数文件配置是否正确。
按顺序启动相关进程
先启动exta进程:
GGSCI (edsir1p8.us.oracle.com) 22> start exta
启动该进程的过程中创建了源端抽取队列:
137上:/home/oracle/software/Goldengate/dirdat/ra
再启动repa进程:
GGSCI (edsir4p1.us.oracle.com) 151> start repa
启动该进程的过程中创建了目标端本地抽取队列:
138上:/home/oracle/software/Goldengate/dirdat/ra
最后启动dpea进程:
GGSCI (edsir1p8.us.oracle.com) 22> start dpea
启动该进程的过程中不创建任何队列,只校验队列文件。
防止目标端repa进程意外终止
修改目标端repa进程的参数文件:
修改行:reperror default,abend 为reperror default,discard
修改完成后repa进程参数文件截图如下:
修改该行的作用是:如果有error出现默认把错误输出到discardfile参数所指定的文件中,即文件
/home/oracle/software/Goldengate/dirrpt/repa.dsc中
如果不修改该行默认是如果有error发生,repa进程就会变为abend状态,即进程挂死。一旦repa进程挂死说明数据同步失败,目前最有效的解决repa进程挂死的方法就是重建repa进程,相当费劲!所以该行修改必须配置。
本文由 路远 首发于【路远网(http://www.luyuan.io)】未经允许不得以任何方式转载,违者必将追究法律责任
- 我的微信
- 这是我的微信扫一扫
- 我的电报
- 这是我的电报扫一扫