如果目标端repa进程意外终止,如何解决(数据同步失败)

  • A+
所属分类:技术

chatGPT账号

如果目标端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)】未经允许不得以任何方式转载,违者必将追究法律责任

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
路远

发表评论

您必须登录才能发表评论!