veridata实验例(5)更改主键列值,update操作将被分成两个语句

续接“veridata实验举例(4)验证veridata查找出updata、delete操作导致的不同步现象”。地址:点击打开链接

环境:

Item

Source System

Target System

Platform

Red Hat Enterprise

Linux Server release 5.4

Red Hat Enterprise

Linux Server release 5.4

Hostname

gc1

gc2

Database

Oracle 10.2.0.1

Oracle 11.2.0.1

Character Set

ZHS16GBK

ZHS16GBK

ORACLE_SID

PROD

EMREP

Listener Name/Port

LISTENER/1521

LISTENER/1521

Goldengate User

ogg

ogg

1、模拟实验环境,使gc1、gc2数据不同步,对gc2上主键列作update操作

GGSCI(gc1) 7> stop RORA_1

Sending STOP request to REPLICAT RORA_1 ...

Request processed.

GGSCI(gc1) 8> info all

Program    Status      Group       Lag          Time Since Chkpt

MANAGER    RUNNING

EXTRACT    RUNNING     EORA_1      00:00:00      00:00:01

EXTRACT    RUNNING     PORA_1      00:00:00      00:00:05

REPLICAT   STOPPED     RORA_1      00:00:00      00:00:01

gc2:

SQL>update TCUSTMER set CUST_CODE='NEW' WHERENAME='ROCKY FLYER INC.';
 --gc2上updata操作

SQL>commit;

SQL>select * from TCUSTMER where CUST_CODE='NEW';

CUST_CODE NAME                          CITY                 ST

---------- -------------------------------------------------- --

NEW       ROCKY FLYER INC.              SHANGHAI             CO

gc1:

SQL>select * from TCUSTMER where CUST_CODE='NEW'; --gc1查询。没有同步更改,查询不到

no rows selected

SQL>select * from TCUSTMER where CUST_CODE='JANE';
--gc1上保留的依旧是原数据

CUST_CODE NAME                          CITY                 ST

---------- -------------------------------------------------- --

JANE      ROCKY FLYER INC.              SHANGHAI             CO

2、执行veridata显示结果,例如以下:

--veridata捕捉到的不是update操作,而是将其拆分成了insert操作、delete操作

小结:

由上可知,当update主键所在的列时,veridata无法捕获出这是update操作。而是通过对照两张表。将update操作拆分成insert操作、delete操作。

3、处理同步

GGSCI(gc1) 10> start RORA_1

Sending START request to MANAGER ...

REPLICAT RORA_1 starting

GGSCI(gc1) 11> info all

Program    Status      Group       Lag           Time Since Chkpt

MANAGER    RUNNING

EXTRACT    RUNNING     EORA_1      00:00:00      00:00:02

EXTRACT    RUNNING     PORA_1      00:00:00      00:00:00

REPLICAT   RUNNING     RORA_1      00:12:48      00:00:02

SQL> select * from TCUSTMER where CUST_CODE='NEW';

CUST_CODE NAME                          CITY                 ST

---------- -------------------------------------------------- --

NEW       ROCKY FLYER INC.              SHANGHAI             CO

********************未完待续**************************

声明:

         原创作品。出自 “深蓝的blog” 博客。同意转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

关于涉及版权事宜。作者有权追究法律责任。

版权声明:本文博主原创文章,博客,未经同意不得转载。

veridata实验例(5)在更改主键列值,update操作将被分成两个语句的更多相关文章

  1. SQLServer 自增主键创建, 指定自增主键列值插入数据,插入主键

    http://blog.csdn.net/zh2qiang/article/details/5323981 SQLServer 中含自增主键的表,通常不能直接指定ID值插入,可以采用以下方法插入. 1 ...

  2. Transactional Replication2:在Subscriber中,主键列是只读的

    在使用Transactional Replication时,Subscriber 被认为是“Read-Only”的 , All data at the Subscriber is “read-only ...

  3. Replication:事务复制 Subscriber的主键列是只读的

    在使用Transactional Replication时,Subscriber 被认为是“Read-Only”的 , All data at the Subscriber is “read-only ...

  4. veridata实验例(3)验证veridata发现insert操作不会导致同步

    veridata实验例(3)验证veridata发现insert操作不会导致同步 续接:<veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况>,地址:点击打开 ...

  5. Linq 更改主键值

    有一个班级表,主键是class_id,在管理班级时要进行逻辑删除,而只是单纯的is_del字段(记录每条数据是否有效)更改为true,主键class_id如果不变动,在再次增加一个班级时,其主键如果和 ...

  6. Mybatis获取自增主键的值

    pojo: public class User { private Integer id; private String name; private String pwd; setter和getter ...

  7. 根据oracle的主键列生成SQLserver的主键

    根据oracle的主键列生成MsSQLServer的主键列 select 'alter table  ' || cu.table_name ||'  add constraint  '||' PK_' ...

  8. C#中使用MySqlCommand执行插入语句后获取该数据主键id值的方法

    .net中要连接mysql数据库,需要引用MySql.Data.dll文件,这文件在mysql官网上有下载. 接着通过MySqlCommand执行插入语句后想要获取该数据主键id值的方法如下: lon ...

  9. MyBatis返回主键,MyBatis Insert操作返回主键

    MyBatis返回主键,MyBatis Insert操作返回主键 >>>>>>>>>>>>>>>>> ...

随机推荐

  1. asp.net 连接access数据库方法

    在 Web.Config 中配置 Access 数据库驱动和数据库文件名称. 请看代码 <appSettings> <add key="DBDriver" val ...

  2. Linux Shell 学习笔记 一 目录结构

    以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin       存放普通用户使用的命令 /sbin     存放管理员可以执行的命令 /home   ...

  3. Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html 使用TCP/IP的套接字(Socket)进行通信 套接字Socke ...

  4. Problem D Ananagrams(map的使用)

    题目链接:Problem D 题意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另一个单词.在判断是否满足条件时,字母不区分大小写. 但是输出时应保留原始大小写, ...

  5. A Byte of Python 笔记(5)函数:定义、形参、局部变量、默认参数、关键参数

    第7章  函数 函数是重要的程序段.它们允许你给一块语句一个名称,然后你可以在程序的任何地方使用这个名称任意多次地运行这个语句块.这被称为 调用 函数. 定义函数 函数通过 def 关键字定义.def ...

  6. ASP.NET MVC5 学习笔记-4 OWIN和Katana

    1. Owin OWIN全名:Open Web Interface for .NET. 它是一个说明,而非一个框架,该声明用来实现Web服务器和框架的松耦合.它提供了模块化.轻量级和便携的设计.类似N ...

  7. iOS 之播放系统声音

    导入框架: 代码: #import <UIKit/UIKit.h> #import <AudioToolbox/AudioToolbox.h> @interface MsgPl ...

  8. Protel99se教程四:将SCH转为PCB文件

    本节课,我们介绍,如何快速的将绘制好的SCH文件转为PCB文件,首先,我们打开刚开始时我们绘制的SCH原理图,我们可以使用protel99se菜单栏的view-Fit All Objects命令,以查 ...

  9. 一个异或加密方案--C语言实现

    核心代码: char encrypt( char f , char c) { return f^c; } int OutEncrypt( char *FilePath, char *SecretWor ...

  10. android基础篇------------java基础(12)(多线程操作)

    <一>基本概念理解 1.什么是进程? 进程就是在某种程度上相互隔离,独立运行的程序.一般来说,系统都是支持多进程操作的,这所谓的多进程就是让系统好像同时运行多个程序. 2.什么是线程呢? ...