GoldenGate复制的几个简单测试

今天测试了一下GoldenGate的复制,发现还是有不少的细节之处需要测试,保证可控,而下面做了几个测试也加深了我对OGG的理解。
默认是不支持DDL的,而线上业务的DDL也是完全可控的,在升级前几天可以冻结DDL,所以在线业务中还是充分利用DML的数据变化即可,不过这些影响还是需要测试到的,做到心中有数。
源端在Solaris下,数据库为10gR2,所以适用的OGG版本只是11.2的版本了。目标端为Linux X86,数据库为11gR2,也是使用同样版本的OGG软件。
同步的过程可以参考之前的一篇文章,我们来做3个测试。
测试1

我们插入一些数据,然后看看DDL的情况下,数据的同步情况。
源端插入一些数据。

n1@TESTDB> insert into test_tab select level,level||'obj' from dual connect by level<500000;
499999 rows created.
n1@TESTDB> commit;
Commit complete.

目标端查看,很快就同步过来了。

SQL>select count(*)from test_tab;
  COUNT(*)
----------
    499999

然后源端做一个truncate操作

n1@TESTDB> truncate table test_tab;
Table truncated.

接着源端插入一条数据,这样源端只存在1条数据

n1@TESTDB> insert into test_tab values('aaa','TAB');
1 row created.
n1@TESTDB> commit;
Commit complete.

目标端:       

SQL> select count(*)from test_tab;
  COUNT(*)
----------
    500000 由此可见,对于DDL类的操作,OGG默认是处理不了,新的数据变更还是能够正常应用。

测试2:我们测试一些delete的场景,看看OGG的同步情况,数据基于测试场景1
源端:

n1@TESTDB> delete from test_tab;
1 row deleted.
n1@TESTDB> commit;
Commit complete.

目标端:

SQL>select count(*)from test_tab;
  COUNT(*)
----------
    500000
SQL> /
  COUNT(*)
----------
    499999

可见这个场景中,竟然主库是一个delete的操作,没有过滤条件和delete全表等价,但是在应用的时候,还是做了过滤的条件应用,而非语句直接应用。

测试3,我们加入一些略微复杂的过滤条件,看看OGG的应用情况。
源端:

n1@TESTDB> delete from test_tab where rownum<500000;
0 rows deleted.
n1@TESTDB> commit;
Commit complete.

目标端,数据没有变化

  COUNT(*)
----------
    499999

通过上面的例子可以看出,主库做了条件删除,rownum相对是一个较模糊的概念,在OGG的同步的时候还是能够保证这个准确性,而且在一些更为负载的场景中,可以轻松做到字段映射之类的细粒度选择复制,实属不易。

时间: 2024-11-03 14:12:20

GoldenGate复制的几个简单测试的相关文章

AJAX简单测试代码实例_AJAX相关

本文实例讲述了AJAX简单测试代码.分享给大家供大家参考.具体如下: 客户端:代码如下:(AJAX_test.html ) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/x

简单测试Apache是如何完成负载均衡策略配置_Linux

随着访问量的不断提升,以及对响应速度要求的苛刻,进行负载均衡设置就显得尤为重要了.公司的系统在最初设计的时候就已经考虑到了负载均衡的规划,www静态服务器配置了两台,由于初期项目时间紧,并且访问量并不高,所以当时只用了一台,另一台在内网中,只是进行了同步,并为发挥出效用来.此次就是对负载均衡的一个简单测试. 先介绍一下apache mod_proxy_balancer的几个配置规则: 将Apache作为LoadBalance前置机分别有三种不同的部署方式,分别是: 1 )轮询均衡策略的配置 进入

AJAX简单测试代码实例

本文实例讲述了AJAX简单测试代码.分享给大家供大家参考.具体如下: 客户端:代码如下:(AJAX_test.html ) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/x

smarty简单测试例子

smarty简单测试例子      <?phprequire 'smarty/libs/Smarty.class.php';$smarty = new Smarty;$smarty->template_dir="smarty/templates/templates";$smarty->compile_dir="smarty/templates/templates_c";$smarty->config_dir="smarty/temp

mysql convert函数性能简单测试

得到了这样一个需求,需要按照拼音字母排序,而mysql数据库使用的是utf编码. 如果使用gbk的话,排序规则是按拼音的. 而mysql中convert函数,可以对数据进行转换. 我们对这个convert进行了简单的性能测试,下面介绍一下测试过程,以及测试结果,如有问题,请各位指出. 软硬件环境 硬件配置:2核CPU.2G内存 数据库:Mysql 5.5 表结构 1 2 3 4 5 CREATE TABLE `test_gbk` ( `id` int(11) NOT NULL AUTO_INCR

java-求:junit的简单测试案例

问题描述 求:junit的简单测试案例 哪位大神能给我一个junit的简单测试案例,新手,初次使用junit4,谢谢. 最好是带参数的. 解决方案 1:引入junit包: 2:@Test public void test(){ //写入要执行的方法 } 此时不需要main方法,该方法体也可以执行. 解决方案二: 网上搜索一下会有一大堆

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能! 服务器 现在来向SQL2008R2插入1000000条数据吧 declare @i int; set @i=0; while @i<1000000 begin INSERT INTO [AppDB].[dbo].[MIS_Article] ([Id] ,

JS简单测试循环运行时间的方法_javascript技巧

本文实例讲述了JS简单测试循环运行时间的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>JS 测试循环运行的时间</title> <script> var arr = []; var max = 10000000; //加载 window.addE

java-JavaScript的一个简单测试,为什么会出这个结果?

问题描述 JavaScript的一个简单测试,为什么会出这个结果? a的字面值和类型都和b相同,就输出"两者一样",但为什么它输出了"两者不一样"呢? 解决方案 因为你是typeof a 和 b比较,而不是 typeof a === typeof b 或者 a === b 解决方案二: 你去掉typeof直接判断的话,就是一样的了.