OGG 单表初始化操作步骤

有时候ogg两端数据不一致,且数据量较大,手工修改比较复杂的情况下,我们需要对这些表进行初始化。初始化的大概思路是:

  1. 停止两端OGG
  2. 如果业务不可以停很长时间,就需要配置目标端进程,暂停这些问题表的同步。待新数据导入后,再次停启进程
  3. 源端通过SCN号备份问题表,传送到目标端还原
  4. 修改目标端进程配置,从SCN开始恢复
  5. 开启OGG进程

源端简陋配置:

GGSCI (db1) 9> infoall

Program     Status     Group       Lag at Chkpt Time Since Chkpt

MANAGER    RUNNING

EXTRACT     RUNNING    EXTFPZX     00:00:00      00:00:05

 

GGSCI (db1) 10>view params EXTFPZX

extract extfpzx

useridogg,password ogg

rmthost192.168.25.101,mgrport 7809

rmttrail  /u01/goldengate/dirdat/fp

ddl include mappedobjname db_fpzx.*;

table db_fpzx.*;

目标端简陋配置:

GGSCI (db2) 6> infoall

Program     Status     Group       Lag at Chkpt Time Since Chkpt

MANAGER   RUNNING

REPLICAT    RUNNING    REPFPZX     00:00:00      00:00:01

GGSCI (db2) 7>view params REPFPZX

REPLICAT repfpzx

USERID ogg,PASSWORDogg

discardfile/u01/goldengate/discard/rep2_discard.dsc, append, megabytes 10

DDL INCLUDE MAPPED

DDLERROR DEFAULTIGNORE RETRYOP

ASSUMETARGETDEFS

map db_fpzx.*,target db_fpzx.*;

我们对db_fpzx.liuliu 这张表进行初始化

SQL> select *from liuliu;

ID AGE NAME EEE WWW
1 liu liuliu222
2 liu liuliu222
3 liu 123 liuliu333
4 liu liuliu444
5 liu liuliu555
6 liu liuliu666
7 liu liuliu222
8 shshshs liuliu222
9 liu liuliu222

9 rowsselected.

我们将目标端中的数据删除,再在源端插入几条数据,是不会报错的,但是此时两端数据已经不一致了,需要对目标端进行初始化。一般来说初始化是在你不知道丢失哪些数据的情况下进行,如果差个两三条你知道的数据,直接在目标端进行插入或修改更快。

SQL> delete from liuliu;

9 rows deleted.

SQL> commit;

Commit complete.

SQL> select *from liuliu;

no rows selected

1、停止两端OGG进程

源端查询SCN号:

SQL> selectdbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

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

729295

2、要求实时性的处理

在数据实时性要求较高的系统,首先确定问题表,然后只在目标端配置文件中将问题表剔除:

MAPEXCLUDE DB_FPZX.LIULIU;

然后启动进程即可。

3、源端通过SCN号备份问题表,传送到目标端还原

  • 备份

exp db_fpzx/fpzx file=/u01/backup/db_fpzx20161129.dmp tables=(liuliu) log=/u01/backup/db_fpzx20161129.log flashback_scn=729295

  • 传输

scp db_fpzx20161129.dmp  [email protected]:/u01/backup

  • 还原

imp system/oracle file=/u01/backup/db_fpzx20161129.dmp fromuser=db_fpzx touser=db_fpzx tables=liuliu ignore=y

4、修改目标端进程配置,从SCN开始还原

GGSCI (db2) 44> edit params REPFPZX

REPLICAT repfpzx

USERID ogg,PASSWORD ogg

discardfile /u01/goldengate/discard/rep2_discard.dsc, append, megabytes 10

DDL INCLUDE MAPPED

DDLERROR DEFAULT IGNORE RETRYOP

ASSUMETARGETDEFS

map db_fpzx.liuliu, target db_fpzx.liuliu, filter(@GETENV("transaction","csn") >729295);

map db_fpzx.*,target db_fpzx.*;

~

~5、启OGG,查询两端状态

时间: 2024-10-25 17:47:24

OGG 单表初始化操作步骤的相关文章

OGG新增表下发详细步骤及相关注意事项

背景: 工作任务OGG新增下发表,根据系统架构,数据下发流程为:系统A --> 系统B --> 系统C 系统A:在与系统B相关的抽取进程(EXTSJXF)的参数文件中新增相关表,在与系统B相关的投递进程(DPDJZSJ1)的参数文件中新增相关表. 系统B:复制进程(REPDJZ2)的参数文件中新增相关表,进行应用,在与系统C相关的抽取进程(EXTJHXT1)的参数文件中新增下发表,同理,投递进程(DPJHSJ1)亦需要在进程参数文件中新增表 系统C:复制进程(REPJHXT1)参数文件新增相关

JQuery 对表单进行初始化操作

提供一种如果前台页面标签比较多,如果挨个初始化的话可能会比较繁琐,这时候我们可以将后台传递的数据组装为json串,前台用jquery将代码初始化到表单中. function loadData(jsonStr) { // alert(jsonStr.toString()) var obj = eval("(" + jsonStr + ")"); var key, value, tagName, type, arr; for (x in obj) { key = x;

11-hibernate,单表GRUD操作实例

1,save 2,update 3,delete 4,get/load(查询单个纪录) 实例代码: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.util.Date; import org.h

【Hibernate】(3)Hibernate单表操作

1. 单一主键 这个是在我们生成的Student.hbm.xml中配置的: <hibernate-mapping> <class name="com.thr.bean.Student" table="STUDENT"> <id name="id" type="int"> <column name="ID" /> <generator class=&quo

oracle表的操作简述

单表的操作!(代码完全可以用手工代替,写下来为了记忆)1.建立表create table HKB_TABLE_MODIFY(  NAME VARCHAR2(6),  AGE  VARCHAR2(3),  SEX  VARCHAR2(2)) 2.修改表添加字段:alter table HKB_TABLE_MODIFY add ADDRESS nvarchar2(3);删除字段:alter table HKB_TABLE_MODIFY drop column SEX;修改字段属性:alter tab

Python中使用SQLAlchemy连接Mysql数据库2(多表连接操作)

http://blog.csdn.net/u011573853/article/details/51355113 在上面我们已经说了单表的一些操作,现在我们说一下多表的连接 >>> from sqlalchemy import distinct >>> from sqlalchemy.orm import aliased >>> Astu = aliased(Stu,'Astu') >>> Acla = aliased(Cla,'Ac

Spring Boot从入门到实战:整合通用Mapper简化单表操作

数据库访问是web应用必不可少的部分.现今最常用的数据库ORM框架有Hibernate与Mybatis,Hibernate貌似在传统IT企业用的较多,而Mybatis则在互联网企业应用较多.通用Mapper(https://github.com/abel533/Mapper) 是一个基于Mybatis,将单表的增删改查通过通用方法实现,来减少SQL编写的开源框架,且也有对应开源的mapper-spring-boot-starter提供.我们在此基础上加了一些定制化的内容,以便达到更大程度的复用.

Python中使用SQLAlchemy连接Mysql数据库(单表操作)

一,SQLAlchemy的安装 使用 $ easy_install sqlalchemy 或 $ pip install sqlalchemy 如果出现什么错,就进去root用户下进行安装试试,或者网上查查 >>> import sqlalchemy >>> 这样说明成功了,切记是小写哦 二,使用 理论我也不懂,自己查查资料,现在用一个小的案例说一下使用步骤 1,在进行数据操作之前要先连上数据库. >>> from sqlalchemy import

9.17 模型层 ORM 单表操作

1 创建模型 创建名为book的app,在book下的models.py中创建模型: from django.db import models # Create your models here. class Book(models.Model): id=models.AutoField(primary_key=True) title=models.CharField(max_length=32) state=models.BooleanField() pub_date=models.DateF