【原創】goldengate 目的端rep複製程式 遇到ora-00001 異常終止abend的血案

msdnchina發表於2012-01-09
環境介紹:
goldengate 目的端rep複製程式 遇到ora-00001 異常終止abend的血案



源頭oracle,1個extract程式,該的程式引數檔案配置的是user.*

源頭oracle,2個進datapump程式(這是往2個不同目的端上的dp程式),第一個dp程式的引數檔案配user.*
第二個程式(以下簡稱dpww程式)的引數檔案配置的是
user.a;
user.b;
user.c;
user.d;

,也就是說,dpww程式是完成了部分表傳輸到目的地的trail檔案中。



目的端repww程式abended,看discard檔案,如下所示:


Current time: 2012-01-07 09:10:58
Discarded record from action ABEND on error 1

OCI Error ORA-00001: unique constraint (CIMS.PK_GT_JYZ_ZS) violated (status = 1), SQL
Aborting transaction on /u02/ggs/dirdat/ww beginning at seqno 0 rba 111386
error at seqno 0 rba 114763
Problem replicating CIMS.GT_JYZ_ZS to CIMS.GT_JYZ_ZS
Mapping problem with insert record (target format)...


違反唯一約束,第一反應肯定是目的端此表中存在相同的記錄,去目的端查詢此表,where條件是報錯中的列和列值,查詢結果是空記錄。


邪門了。。


於是提交sr,一級sr,老外接手處理,下班了,澳大利亞的華人接手處理,折騰一圈,沒搞定。

於是n天過去了。

於是我又重新部署goldengate,部署完畢後,業務啟動,repww程式還是報錯,報錯提示跟以上錯誤一樣。

logdump工具上陣:

logdump> open ./dirdat/ww000000
logdump> ghdr on
logdump> detail on
logdump> detail data

logdump> pos 111386
logdump> n

發現如下資訊:

2012/01/07 08:59:29.337.624 Insert Len 360 RBA 114310
Name: CIMS.GT_JYZ_ZS
After Image: Partition 4 G m
0000 0013 0000 000f 3337 3032 3834 3630 3036 3635 | ........370284600665
3934 3000 0100 0a00 0000 06b3 c2c8 f0b2 d300 0200 | 940.................
1500 0031 3937 362d 3038 2d31 373a 3038 3a34 333a | ...1976-08-17:08:43:
3039 0003 0003 0000 3100 0400 0400 0030 3100 0500 | 09......1......01...
0f00 0000 0b31 3339 3634 3231 3039 3837 0006 0004 | .....13964210987....
ffff 0000 0007 0003 0000 3100 0800 04ff ff00 0000 | ..........1.........
0900 0400 0031 2000 0a00 1600 0000 1233 3730 3230 | .....1 ........37020




2012/01/07 08:59:29.337.624 Insert Len 360 RBA 114763
Name: CIMS.GT_JYZ_ZS
After Image: Partition 4 G m
0000 0013 0000 000f 3337 3032 3834 3630 3036 3635 | ........370284600665
3934 3000 0100 0a00 0000 06b3 c2c8 f0b2 d300 0200 | 940.................
1500 0031 3937 362d 3038 2d31 373a 3038 3a34 333a | ...1976-08-17:08:43:
3039 0003 0003 0000 3100 0400 0400 0030 3100 0500 | 09......1......01...
0f00 0000 0b31 3339 3634 3231 3039 3837 0006 0004 | .....13964210987....
ffff 0000 0007 0003 0000 3100 0800 04ff ff00 0000 | ..........1.........
0900 0400 0031 2000 0a00 1600 0000 1233 3730 3230 | .....1 ........37020

注意,以上兩段只是rba不同,一個是RBA 114310 另一個是 RBA 114763,都是往同一個表中的insert into操作。

看到這裡,我感覺到納悶,怎麼可能在目的端trail檔案寫2遍相同的操作呢?

莫非是dpww程式的引數檔案把GT_JYZ_ZS這個表多配置了一次?

於是開啟源端的dpww程式的引數檔案,搜了一下,果然,CIMS.GT_JYZ_ZS出現了2次。

那麼還有沒有可能其他的表名出現了重複(一共138張表)?
於是,裝上pb,在我自己的資料庫中建了個table,將這138張表用excel另存為"製表符分割的txt"檔案,
用pb的row-import選單,將這138個表名匯入了表中,
使用sql查詢:
select tablename,count(*) from xxxx group by tablename having count(*)>1
結果只反饋這一行:GT_JYZ_ZS

於是確認,只有這一行有問題。刪除掉重複的一行GT_JYZ_ZS,重啟dpww程式即可。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/161195/viewspace-1057064/,如需轉載,請註明出處,否則將追究法律責任。

相關文章