goldengate 故障及解決方法彙總

hunterjoy發表於2012-09-22

摘自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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章