今天接到客户的服务情求,他们的GoldenGate复制出现故障,我觉得他们的问题挺有代表性,于是拿出来给大家分析一下。
错误描述:
数据投递进程abend,在日志报告中的错误提示如下:
2010-02-01 17:19:18 GGS ERROR 103 Discard file (./dirrpt/rep1.dsc) exceeded max bytes (10000000).
discard文件中的信息摘录如下:
$ tail -500 rep1.dsc
DEALPKID = a28e4f741a73636c2ffb3561c087aad4
PAYTIME = NULL
PAYMONEY = NULL
TAXPAYERID = 07047761
DATAFLAG = 0
SKYBILLNO = 20100201000061699800
QSYHHH = NULL
SFXYSH = 402420051647
*
Current time: 2010-02-01 15:00:25
ORA-01653: unable to extend table aaa.TB_LVY_TEMPINVOIC by 1024 in tablespace aaa, SQL <UPDATE "aaa"."TB_LVY_TEMPINVOIC" SET "TAXPAYERID" = :a1,"BANKTYPECODE" = :a2,"CHINANAME" = :a3,"ISPAYED" = :a4,"SELFTEL" = :a5,"BANKACCOUNTCODE" = :a6,"MNGNAME" = :a7,"LEVYORGNAME" = :a8>
Operation failed at seqno 1304 rba 57112519
Discarding record on action DISCARD on error 1653
Problem replicating aaa.TB_LVY_TEMPINVOIC to aaa.TB_LVY_TEMPINVOIC
Error (1653) occurred with insert record (target format)...
*
TEMPINVOICEDATADETAILID = de81b1461a7365773ff6a93fd2f90cad
INVOICEITEMCODE = <Raw Data>
00000000: d0 a1 b9 a4 |.... |
RULEANDEXPLAIN = NULL
PROJECTADDRESS = NULL
UNIT = NULL
AMOUNT = NULL
UNITPRICE = NULL
INVOICESUM = 99.00
TRANSFEESUBTOTAL = NULL
OTHERFEESUBTOTAL = NULL
PROJECTQUANTITY = NULL
PROJECTTOTALMONEY = NULL
PROJECTFEEORPAY = NULL
DEDUCTIONPREPAREMATERIAL = NULL
DEDUCTIONPROJECTPROGRESSMONEY = NULL
REMARK = NULL
TEMPINVOICEDATAID = 236001000002_10035435
ITEMFLAG = NULL
MILEAGE = NULL
ITEMNAME = NULL
ITEMCODE = NULL
CHECKITEM = NULL
DEDUCTTAX = NULL
FLOORNO = NULL
AREATYPE = NULL
AREA = NULL
ITEMPROPERTY = NULL
ITEMREMARK = NULL
*
问题分析:
根据错误我们可以看出直接引起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;