环境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. IBM WebSphere 远程代码执行漏洞安全预警通告

    近日,IBM发布安全通告称修复了一个WebSphere Application Server中一个潜在的远程代码执行漏洞(CVE-2018-1567).攻击者可以构造一个恶意的序列化对象,随后通过SO ...

  2. linux抓包的实现

    工具: wireshark tcpdump 在这里仅仅介绍后者: 在网络问题的调试中,tcpdump应该说是一个必不可少的工具,和大部分linux下优秀工具一样,它的特点就是简单而强大. 默认情况下, ...

  3. 工程师泄露5G核心技术文档 被判有期徒刑三年缓刑四年

    2002 年至 2017 年 1 月,黄某瑜就职于中兴通讯公司,担任过射频工程师.无线架构师等职务.2008 年 4 月至 2016 年 10 月,王某就职于中兴通讯公司西安研究所,担任过 RRU 部 ...

  4. 限流 - Guava RateLimiter

    2019独角兽企业重金招聘Python工程师标准>>> 限流 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦并发访问/请求达到限制速率或者 ...

  5. mpvue开发微信小程序之时间+日期选择器

    最近在做微信小程序,技术栈为mpvue+iview weapp组件库. 因项目需求,要用到日期+时间选择器,iview组件库目前还未提供时间日期选择器的组件,小程序官方组件日期时间也是分开的,在简书上 ...

  6. Redis(一):数据结构与对象

    前言 本书是Redis设计与实现的读书笔记,旨在对Redis底层的数据结构及实现有一定了解.本书所有的代码基于Redis 3.0. 简单动态字符串 SDS Redis没有直接使用C语言中的字符串,而是 ...

  7. 从实践出发:微服务布道师告诉你Spring Cloud与Boot他如何选择

    背景 随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. 系统架 ...

  8. Java网络编程从入门到精通(27):关闭服务端连接

    在客户端和服务端的数据交互完成后,一般需要关闭网络连接.对于服务端来说,需要关闭Socket和ServerSocket. 在关闭Socket后,客户端并不会马上感知自已的Socket已经关闭,也就是说 ...

  9. 关于SQL语言,这些你不得不了解!

    一.SQL概述 关系数据库标准语言SQL(结构化查询语言). 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言, ...

  10. 5分钟入门pandas

    pandas是在数据处理.数据分析以及数据可视化上都有比较多的应用,这篇文章就来介绍一下pandas的入门.劳动节必须得劳动劳动 1. 基础用法 以下代码在jupyter中运行,Python 版本3. ...