goldengate 故障及解决方法汇总

摘自http://blog.csdn.net/amethystqi/article/details/6597861

1.数据库thread与sid不对应

问题描述:

GGS ERROR 500 抽取进程extu1起不来,提示找不到thread2的归档(没有保留哪天具体的报错信息)

问题分析:

rac数据库曾经删除又重建一个节点,故thread2对应的实例已经没有了,更没有它的归档了(之前是将该实例删除前的归档日志来骗过gg,但是后来这种方式不管用了)

问题处理:

在extu1的参数文件中跳过数据库thread2的同步:

1).找出数据库thread2对应gg的thread号

select distinct(thread#) from V$log;
info extract extu1,showch

2).跳过该thread : THREADOPTIONS PROCESSTHREADS EXCEPT 3


2.表结构或数据不一致

问题描述:

2011-07-08 20:42:12 GGS ERROR 218 Error mapping from user.TMQAPR to user.TMQAPR.

问题分析:

出现该问题一般都是由于同步的源和目标表结构不一致,包括表字段和索引。

除表结构外,数据的不一致也可能导致mapping 错误,如原库要delete或update时,gg库找不到该条数据等,具体原因见report中的错误号:

2011-07-18 09:29:46 GGS WARNING 218 SQL error 1403 mapping ITM.SALES_CARD to ITM.SALES_CARD.

2011-07-18 09:29:46 GGS ERROR 218 Error mapping from ITM.SALES_CARD to ITM.SALES_CARD..

$ oerr ora 1403
01403, 00000, "no data found"
// *Cause:
// *Action:

问题处理:

1).如果是表字段不一致,需要修改表字段,异构数据库还需要重新生成表结构定义文件,再重启进程。

2). 如果是索引不一致,需要重建索引,异构数据库还需要重新生成表结构定义文件,再重启进程。(之前没有关注索引是否一样,以后关注一下索引)

3). 遇到这种情况,不能先去对比两端的表结构(可能修改表结构的sql在后面执行),而应该先去查明原因。若是数据问题,可以跳过该表的同步,然后重新同步该表。


3.discard file写满了

问题描述:

REPU1 report中报错,discard 超出了限制大小(具体的报错信息没记下,如果找到了,再补充).

问题分析:

因为某些原因,导致gg一直写discard,超过参数文件中限定的大小,就会报错。解决了不断discard的问题,就能解决discard文件写满的问题。

问题处理:

1).修改repu1的参数文件,增大discard文件限制:discardfile /goldengate/dirrpt/repu1.dsc,append,megabytes 2000m(可选) 。

2).查看discard文件/goldengate/dirrpt/repu1.dsc ,查看里面的报错信息,undo不足,我是在做大表的delete,增加了undo表空间,再start repu1。


--下面是网上的一些报错和解决,摘录如下。其中一些也遇到过,但是因为错误提示很清楚,也容易解决,并没有单独去总结。

4.用户不存在

问题描述:

2010-05-02 10:45:20 GGS ERROR 2001 Oracle GoldenGate Delivery for Oracle, rcrmheal.prm: Fatal error executing DDL replication: error [Error code [1918], ORA-01918: user 'KINGSTAR' does not exist, SQL /* GOLDENGATE_DDL_REPLICATION */ alter user kingstar account unlock ], no error handler present.

问题分析:

根据分析日志可以确定是目标端不存在该用户导致的故障。

问题处理:

方法1、如果不需要同步该用户,可以在目标端去掉掉映射该用户,再重启进程。

例如去掉:MAP KINGSTAR.*, TARGET CRMKINGSTAR.*;

方法2、在目标端手工创建该用户,再重启进程。


5.表不存在

问题描述:

2010-05-10 15:02:12 GGS ERROR 101 Oracle GoldenGate Delivery for Oracle, rcrmheal.prm: Table CRMOLAP.TB_FT_OFSTK_CLIENT_BY_DAY does not exist in target database.

问题分析:

根据分析日志可以确定是目标端不存在该表导致的故障。

问题处理:

方法1、如果不需要同步该表,可以在目标端排除掉该表,再重启进程。

例如添加:MAPEXCLUDE OLAP.TB_FT_OFSTK_CLIENT_BY_DAY

方法2、在目标端手工创建该表, 异构数据库还需要重新生成表结构定义文件,再重启进程。


6.数据库索引失效

问题描述

2010-07-05 14:48:32 GGS WARNING 218 Oracle GoldenGate Delivery for Oracle, rapcaxht.prm: SQL error 1502 mapping AXHT.DOCONTRACT to APCAXHT.DOCONTRACT OCI Error ORA-01502: index 'APCAXHT.PK_SID' or partition of such index is in unusable state (status = 1502), SQL .

问题分析:

数据库索引失效引起的故障。

问题处理:

重建这个有问题的索引,再重启进程,故障排除。


7.表结构不一致

问题描述:

2010-05-08 14:50:44 GGS ERROR 218 Oracle GoldenGate Delivery for Oracle, rcrmheal.prm: Error mapping from OLAP.TB_FT_OFSTK_BAL_HIS to CRMOLAP.TB_FT_OFSTK_BAL_HIS.

问题分析:

出现该问题一般都是由于同步的源和目标表结构不一致,包括表字段和索引。

问题处理:

1、 如果是表字段不一致,需要修改表字段,异构数据库还需要重新生成表结构定义文件,再重启进程。

2、 如果是索引不一致,需要重建索引,异构数据库还需要重新生成表结构定义文件,再重启进程。


8.磁盘空间不足

问题描述:

2010-05-07 04:05:31 GGS ERROR 103 Oracle GoldenGate Collector: Unable to write to file "./dirdat/crm/fl003629" (error 28, No space left on device).

2010-05-07 04:05:31 GGS ERROR 190 PROCESS ABENDING.

问题分析:

根据分析日志可以确定是磁盘空间不足导致的故障。

问题处理:

划分足够的磁盘空间,再重启进程。


9.TCP/IP故障

问题描述:

2010-06-25 21:06:04 GGS WARNING 150 Oracle GoldenGate Capture for Oracle, BSAIAXEC.prm: TCP/IP error 10060 (由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。).

问题分析:

根据分析日志可以确定是不能连接到远程主机,包括ip地址或端口号。

问题处理:

需要打通能够连接到远程主机IP和端口,再重启进程。


10.数据库不能连接

问题描述:

2010-05-20 18:25:13 GGS ERROR 182 Oracle GoldenGate Delivery for Oracle, rtasaxta.prm: OCI Error during OCIServerAttach (status = 12154-ORA-12154: TNS:could not resolve the connect identifier specified).

问题分析:

这种故障是数据库不能连接导致goldengate进程异常。

问题处理:

需要先解决数据库异常,再重启进程。


11.表空间不足

问题描述:

2010-02-01 17:19:18 GGS ERROR 103 Discard file (./dirrpt/rep1.dsc) exceeded max bytes (10000000).

问题分析:

根据错误可以看出直接引起GoldenGate进程停止的原因是discard文件被写满了,是什么原因造成discard文件被写满的呢?从discard文件中我们看到是发生了ORA-01653: unable to extend 错误,看到这里我相信大家都知道该怎么处理了吧,我们只要扩展这个aaa.TB_LVY_TEMPINVOIC对象所在的表空间的大小即可。

问题处理:

1、找到相关对象存储的表空间;

例如:select owner,table_name,tablespace_name from dba_tables

2、执行表空间扩展

例如:ALTER TABLESPACE tbs_03 ADD DATAFILE 'tbs_f04.dbf' SIZE 100K AUTOEXTEND ON NEXT 10K MAXSIZE 100K;

12.网络传输问题

问题描述:

2010-06-29 16:22:28 GGS ERROR 112 There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Remote file used is /oradataA/ggtrail/b1000008, reply received is Unable to lock file "/oradataA/ggtrail/b1000008" (error 13, Permission denied). Lock currently held by process id (PID) 3674350).

问题分析:

问题处理:

方法1、手工去KILL掉相应的锁进程,再重新启动进程。

方法2、不需理会,大概2小时后会自动释放该锁进程。

方法3、goldengate 10.4.0.76 会解决锁问题。

13.参数变量配置不正确

问题描述:

Did not recognize parameter argument

问题分析:

进程参数文件配置不正确。

问题处理:

检查参数配置文件,可能是进程名称与配置文件不一致或者是参数不正确,重启进程。

14.捕获进程不能为表添加补充日志

问题描述:

2010-07-19 16:20:03 GGS ERROR 2100 Oracle GoldenGate Capture for Oracle, ecrmheal.prm: Could not add TRAN DATA for table, error [ORA-32588: supplemental logging attribute all column exists, SQL ALTER TABLE "AXTECH"."TB_FUND_MATCHING" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS /* GOLDENGATE_DDL_REPLICATION */], error code [32588], operation [ALTER TABLE "AXTECH"."TB_FUND_MATCHING" ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS /* GOLDENGATE_DDL_REPLICATION */ (size 113)].

问题分析:

因为表已经开启了补充日志(附加日志),而对表做DDL操作时,参数“DDLOPTIONS ADDTRANDATA”会对表重新开启补充日志(附加日子),但如果该表超过32个字段,并且该表没有唯一索引时会出现上面的异常;

问题处理:

方法1、去掉参数“DDLOPTIONS ADDTRANDATA”。

方法2、DELETE TRANDATA 用户.表

方法3、登录数据库执行: ALTER TABLE AXHT.BMBM2002 DROP SUPPLEMENTAL LOG DATA (ALL) COLUMNS

15.数据库补充日志(附加日志)没有打开

问题描述:

2010-10-14 09:25:50 GGS ERROR 190 Oracle GoldenGate Capture for Oracle, ECRMGGS.prm: No minimum supplemental logging is enabled. This may cause extract process to handle key update incorrectly if key column is not in first row piece.

2010-10-14 09:25:50 GGS ERROR 190 Oracle GoldenGate Capture for Oracle, ECRMGGS.prm: PROCESS ABENDING.

问题分析:

根据分析日志可以确定是源端oracle补充日志没有打开导致的故障,如果主键或唯一索引是组合的(复合的),就需要为表配置supplemental log,否则就不必,也就是说,如果所有表的主键是单列的,那根本就不必去理会它是什么意思,如果更新了主键中的部分字段,那supplemental log的作用就是把该记录其余的组成部分的数据也传输到目标机,否则目标机就存在不确定性。

问题处理:

登录数据库,使用命令ALTER DATABASE ADD SUPPLEMENTAL LOG DATA打开补充日志。然后重新添加捕获进程和本地队列。

16.表补充日志(附加日志)没有打开

问题描述:

2010-10-14 09:30:49 GGS WARNING Z1-078 Oracle GoldenGate Capture for Oracle, ECRMGGS.prm: No valid default archive log destination directory found for thread 1.

2010-10-14 09:30:50 GGS ERROR 500 Oracle GoldenGate Capture for Oracle, ECRMGGS.prm: Found unsupported in-memory undo record in sequence 2, at RBA 39675920, with SCN 0.554993 (554993) ... Minimum supplemental logging must be enabled to prevent data loss.

2010-10-14 09:30:51 GGS ERROR 190 Oracle GoldenGate Capture for Oracle, ECRMGGS.prm: PROCESS ABENDING.

问题分析:

根据分析日志可以确定是源端oracle补充日志没有打开导致的故障。

问题处理:

登录数据库,使用命令ALTER DATABASE ADD SUPPLEMENTAL LOG DATA打开补充日志。

17.DDL复制表没找到

问题描述:

2010-10-14 13:32:10 GGS ERROR 2008 Oracle GoldenGate Capture for Oracle, ECRMGGS.prm: DDL Replication is enabled but table GGS.GGS_DDL_HIST is not found. Please check DDL installation in the database.

2010-10-14 13:32:10 GGS ERROR 190 Oracle GoldenGate Capture for Oracle, ECRMGGS.prm: PROCESS ABENDING.

问题分析:

根据分析日志可以确定是DDL复制操作已经打开,但没有找到安装复制DDL执行脚本产生的表GGS.GGS_DDL_HIST导致的故障。

问题处理:

因为安装复制DDL是使用用户GGDDL,执行脚本后会在该用户产生跟踪goldengate运行的表,所以要实现支持DDL操作,在参数文件中登录数据库必须使用GGDLL和对应的密码登录。例如:USERID GGDDL@CRMDB,PASSWORD GGDDL。

18、长事务处理
(1)检查长交易的存在
info extxx, showch   (查看抽取进程的检查点)

查看长交易的方法
send extract , showtrans [thread n] [count n]
例如:查看extxa进程中节点1上最长的10个交易
send extract extxa, showtrans thread 1 count 10

(2)跳过或接受长交易的方法
send extract , skiptrans <7.19.32497> thread <2>   该命令跳过交易
send extract , forcetrans <7.19.32497> thread <1>  该命令强制认为该交易已经提交。

(3)配置长交易告警
extract extxa
.......
warnlongtrans 12h, checkintervals 10m
每个10分钟检查一次长交易,如果有超过12小时的长交易,就向GGSERR.LOG中加入一条告警信息。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/543979/viewspace-744791/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/543979/viewspace-744791/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值