OGG應用復制進程報錯OGG 01161


OGG 應用進程abend,通過report abend_process_name可以發現如下報錯信息

ERROR   OGG-01161  Bad column index (15) specified for table UPCENTER.STK_LIST, max columns = 15.

1.目標端,查詢報錯進程參數,目標端,源端表名稱

ggsci> info all;
view param abend_process_name;
可以發現存在def文件,此文件一般是異構環境才存在的!
sourcedefs /home/oracle/ogg/dirdef/123_666.def map source.a ,target target.b;

源端查詢表結構

SQL>desc UPCENTER.STK_LIST
只有15個列

2.源端,查詢同步報錯的表信息

運維的環境有OGG拓撲圖,因此很快定位找到源端OGG環境
通過ggsci>info all
查詢確認 e_xxx,r_xxx找到抽取進程,投遞進程后

SQL>desc source.a  發現!列是16個,而並非目標端15個列,並且源端目標端並未使用col列指定參數,因此默認是所有列同步的。
本次問題得到了,源端新增一個列,導致目標端ogg應用進程abend
解決方法:目標端手工添加一個字段!並且源端重新配置報錯表的def文件!

確認新增字段無默認值
SQL> select DATA_DEFAULT,TABLE_NAME,COLUMN_NAME from USER_TAB_COLUMNS where table_name='DDD';

3.目標端新增字段

1)確認表無dml操作
SQL>select object_id from dba_objects where owner='xx' and object_name='xx';
SQL>select type,id1,id2,lmode,request from gv$lock where id1=object_id;
確認無TM 3號鎖之后或者更高級別的鎖之后,添加字段。
2)添加字段
SQL>alter table owner.table_name add uxx varchar2(32 char);
--如果有default 則加上 default 'x';
3)啟動abend進程
GGSCI> start abend_process;
報錯
提示def文件列還是只有15列!

4.源端創建新的def文件,目標端更新def文件使用最新的

說明,本次只有1個表存在問題,因此流程是源端對單個表創建def文件后,將此表信息復制后,在目標端def文件編輯更新這個表的def記錄。
如果存在多個表有問題,最簡單的是源端所有抽取的表創建def文件,目標端直接替換def文件該名。

源端:創建問題表最新def文件
$cd /u01/app/ogg/base/dirdef
$vi source_a_bc.prm
defsfile ./dirdef/source_a_bc.def,purge
USERID goldengate ,password oracle
table source.table_name;

/u01/app/ogg$./defgen paramfile /u01/app/ogg/base/dirdef/source_a_bc.prm

$cat ./dirdef/source_a_bc.def
*
Definition for table source.table_name
Record length :1356
Syskey:0
Columns:16
column_name1 xx
column_name 2 xxx
End of definition 

上述* => END 整體復制

5.目標端更新def文件

!如果應用進程,復制進程無DEF參數,說明不需要配置這個。異構環境添加表字段后,還需要參考def文件才能進行ogg同步!
ggsci>info abend_process_name
參數 defsfile  ./······
備份:cp xxx xxx.bak
編輯 vi xxx 將上述備份的進行替換
*
Definition for table source.table_name Record length :1356 Syskey:0 Columns:16 column_name1 xx column_name 2 xxx End of definition 上述* => END 整體復制
啟動abend_process 后,OGG中斷恢復!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM