【GoldenGate】OGG-01163的處理方法

Jet_Zhang發表於2018-02-28
故障現象:
複製程式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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章