环境11.2.0.4 linux6.9 RAC2节点,ogg版本Version 12.2.0.1.160823 OGGCORE_OGGADP.12.2.0.1.0_PLATFORMS_161019.1437

应用进程abend 观察报错信息,insert 虚拟列报错。

总结方法:

1.源端抽取进程,对表的列进行明确定义,抽取哪些列

2.目标端也对列进行明确定义

3.目标端应用需要应用源端定义列后的变更记录,因此可以说会丢失一部分的变更数据,或者重新初始化同步。

或者另外一种方法是源端删除虚拟列.但是目标端也会抛弃一部分数据类似。

目标端,应用进程修改
[oracle]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.2.0.1. OGGCORE_12.2.0..0_PLATFORMS_151211.1401_FBO
Operating system character set identified as UTF-. 应用进程报错信息如下: view report rp02
2020-05-20 16:57:57  INFO    OGG-06510  Using the following key columns for target table hr.a: D_ID.
Exception in thread "main" oracle.goldengate.util.GGException: Unable to commit transaction, STATUS=ABEND, java.sql.SQLException: ORA-54013: 不允许对虚拟列执行 INSERT 操作 如下是应用进程参数信息
GGSCI (dsapdb26) 2> edit param rp02
REPLICAT rp02
getEnv (LD_LIBRARY_PATH)
TARGETDB LIBFILE libggjava.so SET property=dirprm/java.proes
GROUPTRANSOPS 10
MAXTRANSOPS 10
GETUPDATEBEFORES
MAP scott.a,TARGET hr.a;
MAP scott.b,TARGET hr.b,filter (@GETENV ('transaction', 'csn') > 498252132);
如下是源端抽取进程参数信息
GGSCI> view param exta
extract exta
tranlogoptions dblogreader
EXTTRAIL /ogg/ext/dirdat/ea
USERID ogg,PASSWORD xx_scott_passwd
TABLE scott.a ,keycols(R_ID); SQL> desc scott.a
Name Null? Type
----------------------------------------- -------- ----------------------------
R_ID NOT NULL VARCHAR2()
P_ID VARCHAR2()
······ 省略若干字段
SQL> desc hr.a
ERROR:
ORA-: object hr.a does not exist
GGSCI (dsapdb26) > info exta showch
Current Checkpoint (position of last record read in the data source):
Thread #:
Sequence #:
RBA:
Timestamp: -- ::37.000000
SCN: 1.775085393 ()
Redo File: Not Available

对报错的a表进行修改参数

思路:源端抽取参数添加表列的信息;

目标端应用参数添加表列对照信息;

源端抽取进程修改
GGSCI> edit param exta
TABLE scott.a,keycols(R_ID),cols(R_ID,P_ID······);
GGSCI> stop exta
GGSCI> start exta 目标端进程修改
GGSCI> edit param rp02
MAP scott.a(R_ID,P_ID,······) ,TARGET hr.a ,keycols(R_ID),COLMAP(R_ID=R_ID,P_ID=P_ID,······),filter (@GETENV ('transaction', 'csn') > 5070052689); 重启之后,发现a表无异常,但是应用进程的b表报错了,报错一致,也是无法对虚拟列进行insert操作!

对报错的b表进行修改参数

思路:源端抽取参数添加表列的信息;

目标端应用参数添加表列对照信息;

源端对抽取的列进行cols参数配置
GGSCI> edit param exta
TABLE scott.b,cols(D_ID,D_TYPE,LOG_xx······);
GGSCI> info exta showch
--找最小的
Current Checkpoint (position of last record read in the data source):
Thread #:
Sequence #:
RBA:
Timestamp: -- ::14.000000
SCN: 1.775699573 ()
Redo File: Not Available
Current Checkpoint (position of last record read in the data source):
Thread #:
Sequence #:
RBA:
Timestamp: -- ::14.000000
SCN: 1.775699561 ()
Redo File: Not Available
--目标端修改,修改前
MAP scott.b,TARGET hr.b (@GETENV ('transaction', 'csn') > );
修改后
MAP scott.b(D_ID,D_TYPE,LOG_······) ,TARGET hr.b,COLMAP(D_ID=D_ID,D_TYPE=D_TYPE,LOG_······),filter (@GETENV ('transaction', 'csn') > );
重启EXT抽取进程后,重启应用REP进程

OGG应用进程abend报错无法insert虚拟列的更多相关文章

  1. OGG投递进程报错无法open文件,无法正常投递

    1.1现象 之前有个客户遇到一个问题,OGG同步数据链路,突然有一天网络出现问题,导致OGG投递进程无法正常投递,无法写入目标端的该文件. 猜测是由于网络丢包等原因导致文件损坏,无法正常open,re ...

  2. 报错:无效的列类型: 1111;must be specified for all nullable parameters.

    org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter. Most JDBC drivers ...

  3. [sql 注入] insert 报错注入与延时盲注

    insert注入的技巧在于如何在一个字段值内构造闭合. insert 报错注入 演示案例所用的表: MariaDB [mysql]> desc test; +--------+--------- ...

  4. PostgreSQL 大对象导出报错问题分析

    1.前言 在处理用户问题过程遇到一个问题.用户通过pg_dump导出 bytea 对象时,当行的大小超过 1G时,会报错: [v8r6c5b41@dbhost01 ~]$ sys_dump -t t1 ...

  5. thymeleaf Exception processing template "xxx": Exception parsing document: template="xxx", line 6 - column 3报错解决的几种方法

    我是在SpringBoot项目使用Thymeleaf作为模板引擎时报的错误 controller代码非常简单,如下所示: @RequestMapping("/abc") publi ...

  6. GoldenGate过程 abend,报错OGG-00868 ORA-02396: Exceeded Maximum Idle Time, Please Connect Again

    GoldenGate过程 abend,报错OGG-00868 ORA-02396: Exceeded Maximum Idle Time, Please Connect Again 参考原始: Gol ...

  7. INSERT INTO 语句的语法错误【 OLE报错,office终端执行SQL没有问题】

    表名,字段在代码执行之前一定要进行" [ 字段.表名 ] "中括号包裹,不然会报INSERT INTO 语句的语法错误! office终端没有报错的原因,应该是office在执行之 ...

  8. [eclipse]“Syntax error, insert "}" to complete”报错的解决方案

    背景:本人在网上学习java时,看到一段样例代码比较好,因此复制粘贴到eclipse中看看编译结果.结果eclipse报"Syntax error, insert "}" ...

  9. VirtualBox创建虚拟电脑、执行Genymotion模拟器报错

    当安装完Genynition关于Android应用的调试模拟器之后,在Genymotion执行的平台virtualBox:VirtualBox创建虚拟电脑.执行Genymotion模拟器报错: 错误卖 ...

随机推荐

  1. elementaryos5安装chrome,修复依赖

    1.首先去下载个chrome:https://www.google.cn/chrome/ 2.尝试安装chrome:sudo dpkg -i google-chrome-stable_current_ ...

  2. Qt 用户通过对话框选择文件

    void class::on_pushButton_clicked() { fileFullPath = QFileDialog::getOpenFileName(this, tr("Sel ...

  3. MySQL系列(一)

    一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是一种数据库管理系统. MySQL是一种关联数据库管理系统. MySQ ...

  4. history of program atan2(y,x)和pow(x,y)

    编年史 1951 – Regional Assembly Language 1952 – Autocode 1954 – IPL (LISP语言的祖先) 1955 – FLOW-MATIC (COBO ...

  5. Struts2漏洞利用

    Struts漏洞合集 Struts-S2-013漏洞利用 受影响版本 Struts 2.0.0 - Struts 2.3.14.1 漏洞利用 任意命令执行POC: ${(#_memberAccess[ ...

  6. Android MVP 十分钟入门!

    前言 在日常开发APP 的过程中,随着业务的扩展,规模的变化.我们的代码规模也会逐渐变得庞大,每一个类里的代码也会逐渐增多.尤其是Activity和Fragment ,由于Context 的存在,基本 ...

  7. Codeforces Round #622 (Div. 2) 1313 C1

    C1. Skyscrapers (easy version) time limit per test1 second memory limit per test512 megabytes inputs ...

  8. 数学--数论-- HDU6298 Maximum Multiple 打表找规律

    Given an integer nn, Chiaki would like to find three positive integers xx, yy and zzsuch that: n=x+y ...

  9. POJ - 2387 Til the Cows Come Home (最短路入门)

    Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before ...

  10. 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数

    1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ...