当前位置: 首页 > 数据库 > oracle >

goldengate 故障及解决方法汇总

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 <INSERT INTO "APCAXHT"."DOCONTRACT" ("SID","RIQI","JGID","HT_ID","KH_XM","KH_ID","KH_NUM","CREATEDDATE","MODIFIEDDATE","USERNAME","REALNAME","BS","MEMO1","MEMO2","KH_IDLX","DXJGID","KH_IDTY","CPID") VA>.
 
问题分析:数据库索引失效引起的故障。
 
问题处理:重建这个有问题的索引,再重启进程,故障排除。
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。
 
------分隔线----------------------------
  • 收藏
  • 挑错
  • 推荐
  • 打印