【GoldenGate】OGG-01163的處理方法
故障現象:
複製程式Abended,在日誌中報了以下錯誤:
2018-02-23 21:28:36 ERROR OGG-01163 Oracle GoldenGate Delivery for Oracle, rlis.prm: Bad column length (21) specified for column BATCHNO in table LISBASE.LCSIGNLIST, maximum allowable length is 20.
故障分析:
經詢問得知,因應用產生超過現有欄位長度的資料,應用運維人員在未知會DBA的情況下直接修改了表的欄位定義,且該欄位為主鍵。從而導致了該錯誤。
故障解決:
因為GoldenGate的複製程式預設是從trail檔案中獲取表的meta data資訊,在抓取程式未重啟的情況下,trail檔案中表的meta data資訊並不會更新。所以我們需要手工介入,讓複製進行使用新的meta data.
步驟:
1、在源庫使用defgen工具生成表的定義檔案:
//LCSIGNLIST_def.prm
DEFSFILE ./dirdef/LCSIGNLIST.def
USERID ggs@LISDB_BEQ, PASSWORD AACAAAAAAAAAAALAOGDEBEAACFOGYIVGRDIIDGQHSBPDRHXF, ENCRYPTKEY DEFAULT
TABLE LISBASE.LCSIGNLIST;
defgen PARAMFILE dirdef/LCSIGNLIST_def.prm
這時會生成一個LCSIGNLIST.def檔案,這其實就是個文字檔案,按照OGG的描述方式對錶的定義進行了描述:
*+- Defgen version 5.0, Encoding ISO-8859-1
*
* Definitions created/modified 2018-02-23 23:33
*
* Field descriptions for each column entry:
*
* 1 Name
* 2 Data Type
* 3 External Length
* 4 Fetch Offset
* 5 Scale
* 6 Level
* 7 Null
* 8 Bump if Odd
* 9 Internal Length
* 10 Binary Length
* 11 Table Length
* 12 Most Significant DT
* 13 Least Significant DT
* 14 High Precision
* 15 Low Precision
* 16 Elementary Item
* 17 Occurs
* 18 Key Column
* 19 Sub Data Type
* 20 Native Data Type
* 21 Character Set
* 22 Character Length
* 23 LOB Type
* 24 Partial Type
*
Database type: ORACLE
Character set ID: zhs16gbk
National character set ID: UTF-16
Locale: neutral
Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14
TimeZone: +08:00
*
Definition for table LISBASE.LCSIGNLIST
Record length: 632
Syskey: 0
Columns: 16
BATCHNO 64 30 0 0 0 1 0 30 30 0 0 0 0 0 1 0 1 0 1 -1 0 0 0
CONTNO 64 20 36 0 0 1 0 20 20 0 0 0 0 0 1 0 1 0 1 -1 0 0 0
MANAGECOM 64 10 62 0 0 1 0 10 10 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
MAKEOPERATOR 64 60 78 0 0 1 0 60 60 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
MAKEDATE 192 19 144 0 0 1 0 19 19 19 0 5 0 0 1 0 0 0 12 -1 0 0 0
MAKETIME 64 8 166 0 0 1 0 8 8 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
MODIFYDATE 192 19 180 0 0 1 0 19 19 19 0 5 0 0 1 0 0 0 12 -1 0 0 0
MODIFYTIME 64 8 202 0 0 1 0 8 8 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
RECEIVEOPERATOR 64 60 216 0 0 1 0 60 60 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
RECEIVEDATE 192 19 282 0 0 1 0 19 19 19 0 5 0 0 1 0 0 0 12 -1 0 0 0
RECEIVETIME 64 8 304 0 0 1 0 8 8 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
REASON 64 255 318 0 0 1 0 255 255 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
STATE 64 1 578 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
STANDBYFLAG1 64 10 584 0 0 1 0 10 10 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
STANDBYFLAG2 64 10 600 0 0 1 0 10 10 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
STANDBYFLAG3 64 10 616 0 0 1 0 10 10 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
End of definition
在該案例中被修改的列是BATCHNO,原來的長度為20,我們可以看到定義檔案中此時已經是30,前面的64為資料型別,64表示VARCHAR2型別。
2、將定義檔案傳到目標庫(或者複製貼上也可以),修改複製進行的引數,增加:
SOURCEDEFS ./dirdef/LCSIGNLIST.def OVERRIDE
這個引數的意思是從LCSIGNLIST.def獲取表的定義,OVERRIDE必須,這樣才能覆蓋trail中的meta資訊。
將複製程式起來後,在日誌中我們可以觀察到:
2018-02-23 23:33:14 INFO OGG-02752 Oracle GoldenGate Delivery for Oracle, rlis.prm: The definition for table LISBASE.LCSIGNLIST from definitions file /u01/app/oracle/product/ogg/gghome/12.2.0.1/gghome_1/dirdef/LCSIGNLIST.def overrides the table metadata from the trail.
LCSIGNLIST.def已經使用了,複製程式也正常進行。
複製程式Abended,在日誌中報了以下錯誤:
2018-02-23 21:28:36 ERROR OGG-01163 Oracle GoldenGate Delivery for Oracle, rlis.prm: Bad column length (21) specified for column BATCHNO in table LISBASE.LCSIGNLIST, maximum allowable length is 20.
故障分析:
經詢問得知,因應用產生超過現有欄位長度的資料,應用運維人員在未知會DBA的情況下直接修改了表的欄位定義,且該欄位為主鍵。從而導致了該錯誤。
故障解決:
因為GoldenGate的複製程式預設是從trail檔案中獲取表的meta data資訊,在抓取程式未重啟的情況下,trail檔案中表的meta data資訊並不會更新。所以我們需要手工介入,讓複製進行使用新的meta data.
步驟:
1、在源庫使用defgen工具生成表的定義檔案:
//LCSIGNLIST_def.prm
DEFSFILE ./dirdef/LCSIGNLIST.def
USERID ggs@LISDB_BEQ, PASSWORD AACAAAAAAAAAAALAOGDEBEAACFOGYIVGRDIIDGQHSBPDRHXF, ENCRYPTKEY DEFAULT
TABLE LISBASE.LCSIGNLIST;
defgen PARAMFILE dirdef/LCSIGNLIST_def.prm
這時會生成一個LCSIGNLIST.def檔案,這其實就是個文字檔案,按照OGG的描述方式對錶的定義進行了描述:
*+- Defgen version 5.0, Encoding ISO-8859-1
*
* Definitions created/modified 2018-02-23 23:33
*
* Field descriptions for each column entry:
*
* 1 Name
* 2 Data Type
* 3 External Length
* 4 Fetch Offset
* 5 Scale
* 6 Level
* 7 Null
* 8 Bump if Odd
* 9 Internal Length
* 10 Binary Length
* 11 Table Length
* 12 Most Significant DT
* 13 Least Significant DT
* 14 High Precision
* 15 Low Precision
* 16 Elementary Item
* 17 Occurs
* 18 Key Column
* 19 Sub Data Type
* 20 Native Data Type
* 21 Character Set
* 22 Character Length
* 23 LOB Type
* 24 Partial Type
*
Database type: ORACLE
Character set ID: zhs16gbk
National character set ID: UTF-16
Locale: neutral
Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14
TimeZone: +08:00
*
Definition for table LISBASE.LCSIGNLIST
Record length: 632
Syskey: 0
Columns: 16
BATCHNO 64 30 0 0 0 1 0 30 30 0 0 0 0 0 1 0 1 0 1 -1 0 0 0
CONTNO 64 20 36 0 0 1 0 20 20 0 0 0 0 0 1 0 1 0 1 -1 0 0 0
MANAGECOM 64 10 62 0 0 1 0 10 10 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
MAKEOPERATOR 64 60 78 0 0 1 0 60 60 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
MAKEDATE 192 19 144 0 0 1 0 19 19 19 0 5 0 0 1 0 0 0 12 -1 0 0 0
MAKETIME 64 8 166 0 0 1 0 8 8 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
MODIFYDATE 192 19 180 0 0 1 0 19 19 19 0 5 0 0 1 0 0 0 12 -1 0 0 0
MODIFYTIME 64 8 202 0 0 1 0 8 8 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
RECEIVEOPERATOR 64 60 216 0 0 1 0 60 60 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
RECEIVEDATE 192 19 282 0 0 1 0 19 19 19 0 5 0 0 1 0 0 0 12 -1 0 0 0
RECEIVETIME 64 8 304 0 0 1 0 8 8 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
REASON 64 255 318 0 0 1 0 255 255 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
STATE 64 1 578 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
STANDBYFLAG1 64 10 584 0 0 1 0 10 10 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
STANDBYFLAG2 64 10 600 0 0 1 0 10 10 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
STANDBYFLAG3 64 10 616 0 0 1 0 10 10 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
End of definition
在該案例中被修改的列是BATCHNO,原來的長度為20,我們可以看到定義檔案中此時已經是30,前面的64為資料型別,64表示VARCHAR2型別。
2、將定義檔案傳到目標庫(或者複製貼上也可以),修改複製進行的引數,增加:
SOURCEDEFS ./dirdef/LCSIGNLIST.def OVERRIDE
這個引數的意思是從LCSIGNLIST.def獲取表的定義,OVERRIDE必須,這樣才能覆蓋trail中的meta資訊。
將複製程式起來後,在日誌中我們可以觀察到:
2018-02-23 23:33:14 INFO OGG-02752 Oracle GoldenGate Delivery for Oracle, rlis.prm: The definition for table LISBASE.LCSIGNLIST from definitions file /u01/app/oracle/product/ogg/gghome/12.2.0.1/gghome_1/dirdef/LCSIGNLIST.def overrides the table metadata from the trail.
LCSIGNLIST.def已經使用了,複製程式也正常進行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13885898/viewspace-2151365/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GoldenGate COLMAP字串處理Go字串
- GoldenGate常見異常處理Go
- goldengate故障處理一例Go
- GoldenGate常見問題及處理Go
- goldengate故障處理一例(續)Go
- 【goldengate】官方文件筆記二 Oracle GoldenGate 處理介面(GGSCI)Go筆記Oracle
- ORACLE GoldenGate 使用技巧-容錯處理等OracleGo
- 處理問題的方法
- goldengate ddl_setup執行失敗處理Go
- JavaScript常用的字串處理方法JavaScript字串
- 高併發的處理方法
- ORACLE鎖等待的處理方法Oracle
- Smartform中的長文處理方法ORM
- Oracle案例13—— OGG-01163 Oracle GoldenGate Delivery for Oracle, reprpt01.prmOracleGo
- 非同步處理方法非同步
- 影像預處理方法
- GoldenGate初始載入過程變化資料處理Go
- APM RUEI processor處理程式hang死處理方法
- 處理字串的方法都在這裡字串
- netvault Client **** is unreachable的處理方法client
- listener.log太大的處理方法
- 衝突處理的方法(轉載)
- oracle 誤刪除的處理方法Oracle
- JavaMail中文附件的處理方法 (轉)JavaAI
- 批處理打補丁的方法
- GoldenGate extract process abended with error OGG-01028的處理GoError
- ORACLE資料庫壞塊的處理 (處理無物件壞快的方法)Oracle資料庫物件
- goldengate複製過程字符集處理一例Go
- oracle goldengate ddl 操作導致複製程式abended處理案例OracleGo
- oracle goldengate OGG-01264問題處理OracleGo
- JVM如何處理方法呼叫JVM
- php事務處理方法PHP
- AlertDialog 處理方法二
- 異常處理方法 (轉)
- 影像資料不足時的處理方法
- 大量time-wait的處理方法AI
- 探討遊戲反饋的處理方法遊戲
- 【DG】 DataGuard 中處理archive gap的方法Hive