DB由11升至19对应ogg由12升至19遇到ogg-02092\ogg-03533\ogg-01161

事件背景:做DB升级,DB上有数据复制。

最终升级的清单如下:

源环境(升级)--字符集gbk目标环境        
db:11.2.0.3 升级至19.1711.2.0.3
goldengate  12.1.2.0升级为19.1.0.412.1升级至12.3

升级挑战:升级到19.17版本之后,goldengate必须升级到19c版本才能支持19c数据库,但是goldengate19c中抽取进程trail文件格式最低版本为12.2,goldengate 19c支持的最低DB版本是11.2.0.4;而目标环境的DB是11.2.0.3,goldengate版本须为12.2及以上,12.3是最后一个支持11.2.0.3的版本。

分步走:1.升级目标的goldengate   2.升级源的DB [ADB+dbua]  3.升级源的goldengate。

注意:

同步的数据有clob字段存放xml文件(encoding=utf-16)

goldengate 12c 12.2 新特性(updated)

1. trail文件中含metadata信息

2.加强的数据测量和性能监控。
  ogg 12.2可以通过RESTFUL web service,支持对抽取、传输和投递进程的实时度量。针对抽取和投递进程的实时数据库及队列统计,针对传输进程的队列和网络统计。访问方式如下:
http://<hostname>:<manager port>/groups
前提是需要在GLOBALS文件中添加ENABLEMONITORING参数。并在GGSCI中create datastore.

3. 默认9位数字的队列文件 (前面的版本默认6位,支持调整为9位)

升级顺利,到goldengate这个环节遇到了较多情况,在目标端的replicat进程遇到报错:

报错说明
ERROR OGG-03533 Conversion from character set zhs16gbk of source column TABCONFIGXML to character set UTF-16BE of target column TABCONFIGXML failed because the source column contains a character 'f7' at offset 1,843 that is not available in the target character set.

TABCONFIGXML列是clob类型,存放xml文件,encoding=utf-16

【待验证】可考虑加参数:REPLACEBADCHAR ESCAPE

或 COLCHARSET(PASSTHRU, COLNAME)

ERROR   OGG-02092  Unexpected condition in indexOutOfRangeError at line 48. Index 1 out of range. Number of elements: 1.

附加信息:

2023-10-07 08:40:20  INFO    OGG-06505  MAP resolved (entry emp.TB_abc_store): MAP "EMP"."TB_ABC_STORE",TARGET stot.TB_ABC_STORE,KEYCOLS(PK)

没有启用并行,也没开DDL复制,怀疑是个bug,与Bug 33388473  还是有差异。

 ERROR   OGG-01163  Bad column length (17) specified for column LASTPURID in table EMP.TB_COM_RELATION, maximum allowable length is 14.

此报错是列的长度不一致。

附加信息:LASTPURID   varchar2(14),表上无lob字段,通过user_tab_cols字典发现源(19c的库)比表实际多了以SYS_NC00**$的列,通过data_default字段核实到复合索引中基于列做了函数处理。

查到信息Doc ID 2421888.1 :

If you are on OGG v12.3, You might be hitting bug 27078084. Please check with support to get the patch fix

If you are on v12.2,  you might be hitting Bug 28208161.Please check with support to get the patch fix

大概产生的原因是12.2开始tail有metadata,invisible column导致(Doc ID 2235957.1)

 ERROR   OGG-01161  Bad column index (34) specified for table EMP.TB_ERSUM, max columns = 34.
 

附加信息:TB_ERSUM  总共34个列 ,表结构一致。

在排查的过程中发现19c的库 user_tab_cols 比user_tab_columns多一个列名为  SYS_NC00031$ ,column_id没有值,data_default字段显示的是to_date(cdate)  ,cdate是tb_ersum表的列,发现表上有函数索引,索引定义为TO_DATE(cdate,'yyyy-mm-dd')

疑似 The definition file is generated with "noextattr" option which excludes the internal columns.

./defgen paramfile ./dirprm/xxx.prm noextattr

Doc ID 2699006.1  

OGG-01161、OGG-02092

在逐个击破的期间发现:  ogg-02092\ogg-03533 通过 sourcedefs ./dirdef/tabdef.p OVERRIDE  来解决;

其他的通过加参数ASSUMETARGETDEFS OVERRIDE 来解决【跟表结构相关的报错】。

以上报错不是一次性报出来,运行过程中陆续出现。

最终统一使用 sourcedefs ./dirdef/tabdef.p OVERRIDE  来解决。

经核实到的资料信息:

Oracle中的SYS_NC00$ SYS_C000$ SYS_STU SYS_STS 和虚拟字段

SYS_NC00是一种系统自动生成的辅助列,在Oracle 12c以后大量出现在用户表中,其主要伴随一下这些功能出现:

  • row archival;
  • create index t_i on t(upper(v)); 函数索引
  • alter table xxx add (b integer default 1);  default 值

11g SYS_C000$ 伴随以下功能出现 :各种未指定名字的约束。

留下悬疑:对于自动生成的列,尝试用invisible column来处理,处理过,由于环境较复杂,没有足够多的时间来验证,想要构建测试环境,需要投入的各种资源成本也较高,未进行深究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值