暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用OGG技术将DB2数据迁移到Oracle19c

原创 zwtian 2025-03-18
67

一、概要

此次迁移采用的OGG(Oracle GoldenGate)技术,属于Oracle Fusion Middleware产品线,2009年被Oracle收购,它是Oracle Stream的替代者。OGG软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库的同步。OGG可以在异构的IT(Information Technology,信息技术)基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒级的实时复制,从而可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,OGG可以实现一对一、广播(一对多)、聚合(多对一)、双向复制、层叠、点对点、级联等多种灵活的拓扑结构。

OGG能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。和传统的逻辑复制一样,OGG的实现原理是首先通过抽取源端的Redo日志或者Archive Log,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端的数据同步。

 

二、方案对比及选择

1数据库迁移环境前后的对比

 

源数据库主机平台:IBM小型机(PowerPC架构)

源库操作系统:AIX

源库版本:V9.7

 

 

目标数据库主机平台:IBM小型机(PowerPC架构)

目标库操作系统:AIX

目标库版本:19C

数据库节点数:1

 

2数据迁移方式评估

 

·           SQLDEVELPOER工具同步

·           GoldenGate同步

下表是我们经过评估后的对比:

比较维度\产品

Sqldevelpoer

Oracle Goldengate

设计及架构

适用场景

主要用于SQL开发,可用于小型数据库的异构或同构环境下的迁移

主要用于数据备份、容灾;可用于异构环境或同构环境下的数据迁移

使用方式

全流程图形化界面

没有图形化的界面,操作皆为命令行方式,可配置能力差

功能

CDC机制

主要是基于日志

对数据库的影响

源端数据库需要预留额外的缓存空间

自动断点续传

支持

数据转换

自动化的schema mapping

需手动配置异构数据间的映射

特性

数据实时性

实时

应用难度

 

是否需要开发

 

易用性

 

稳定性

 

跨平台

跨数据库

是(sqldeveloper迁移最多支持db2 8和9 LUW版本)

其他

实施及售后服务

原厂和第三方的实施和售后服务

原厂和第三方的实施和售后服务

 

Oracle GodenGate支持的DB2 LUW 数据类型

 

Oracle GodenGate不支持的DB2 LUW 数据类型

Oracle GodenGate支持的DB2 LUW 操作和对象

 

Oracle GodenGate不支持的DB2 LUW 操作和对象

 

三、方案实施

1、前期准备

1.1 源端数据库配置

DB2开启日志和归档日志模式(NEWLOGPATH、LOGARCHMETH1)

db2 "update db cfg for db2_src using NEWLOGPATH /db2data/db2log"

db2 "update db cfg for db2_src using LOGARCHMETH1

1.2 源端数据结构导出

从源库导出数据结构

db2look -d db2_src -e -a -x -i db2inst1 -w db2inst1 -o ddlfile.sql

1.3 OGG安装

 

1.3.1创建OGG安装目录

mkdir /ggs

 

1.3.2 OGG安装目录授权

--源端安装目录授权

chown -R db2inst1:db2iadm1 /ggs

chmod -R 775 /ggs

--目标端安装目录授权

chown -R oracle:oinstall /ggs

chmod -R 775 /ggs

 

 

1.3.3设置环境变量

--源端添加环境变量

PATH=/ggs:$PATH:$HOME/bin:/opt/ibm/db2/V11.5/bin

--目标端添加环境变量

PATH=/ggs:$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=/ggs:$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

 

 

1.3.4安装OGG软件

--源端安装(OGG版本12.3.0.1.2_ggs_Linux_x64_db2105_64bit)

解压安装软件到安装目录

--目标端安装(OGG版本19.1.0.0.4)

解压安装软件进行安装

cd /soft/fbo_ggs_Linux_x64_shiphome/Disk1

./ runInstaller

 

 

1.4在目标库创建OGG管理员和用户所有者

SQL> CREATE USER db2inst1 IDENTIFIED BY tzw;

 

SQL> CREATE USER oggadm IDENTIFIED BY tzw;

 

SQL> GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO db2inst1;

 

SQL> GRANT dba TO oggadm;

 

SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE (grantee=>'OGGADM',privilege_type=>'capture',grant_select_privileges=>true, do_grants=>TRUE);

 

1.5 将源库数据结构导入到目标库

 

1.5.1 对应表字段类型调整

--调整表字段类型参考

1.5.2 生成目标库表结构创建脚本

-- This CLP file was created using DB2LOOK Version 11.1

-- Timestamp: Sat 16 Jan 2021 02:50:54 PM CST

-- Database Name: DB2_SRC       

-- Database Manager Version: DB2/LINUXX8664 Version 11.5.0

-- Database Codepage: 1208

-- Database Collating Sequence is: IDENTITY

-- Alternate collating sequence(alt_collate): null

-- varchar2 compatibility(varchar2_compat): ON

 

 

conn db2inst1/tzw

 

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

-- DDL Statements for Schemas

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

 

-- Running the DDL below will explicitly create a schema in the

-- new database that corresponds to an implicitly created schema

-- in the original database.

 

 

 

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

-- DDL Statements for Table db2inst1.ACT

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

 

 

CREATE TABLE db2inst1.ACT  (

         ACTNO SMALLINT NOT NULL ,

         ACTKWD CHAR(6) NOT NULL ,

         ACTDESC VARCHAR(20) NOT NULL ) ; 

 

CREATE INDEX db2inst1.PK_ACT ON db2inst1.ACT

       (ACTNO ASC);

      

 

-- DDL Statements for Primary Key on Table db2inst1.ACT

 

ALTER TABLE db2inst1.ACT

    ADD CONSTRAINT PK_ACT PRIMARY KEY

       (ACTNO);

 

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.ACT

 

 

 

CREATE UNIQUE INDEX db2inst1.XACT2 ON db2inst1.ACT

       (ACTNO ASC,

        ACTKWD ASC);

 

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

-- DDL Statements for Table db2inst1.CL_SCHED

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

 

 

CREATE TABLE db2inst1.CL_SCHED  (

         CLASS_CODE CHAR(7) ,

         DAY SMALLINT ,

         STARTING date ,

         ENDING date );  

   

 

 

 

 

 

 

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

-- DDL Statements for Table db2inst1.DEPARTMENT

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

 

 

CREATE TABLE db2inst1.DEPARTMENT  (

         DEPTNO CHAR(3) NOT NULL ,

         DEPTNAME VARCHAR(36) NOT NULL ,

         MGRNO CHAR(6) ,

         ADMRDEPT CHAR(3) NOT NULL ,

         LOCATION CHAR(16) ) ;

 

 

-- DDL Statements for Indexes on Table db2inst1.DEPARTMENT

 

 

 

CREATE INDEX db2inst1.PK_DEPARTMENT ON db2inst1.DEPARTMENT

       (DEPTNO ASC);

-- DDL Statements for Primary Key on Table db2inst1.DEPARTMENT

 

ALTER TABLE db2inst1.DEPARTMENT

    ADD CONSTRAINT PK_DEPARTMENT PRIMARY KEY

       (DEPTNO);

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.DEPARTMENT

 

 

 

CREATE INDEX db2inst1.XDEPT2 ON db2inst1.DEPARTMENT

       (MGRNO ASC);

 

-- DDL Statements for Indexes on Table db2inst1.DEPARTMENT

 

 

 

CREATE INDEX db2inst1.XDEPT3 ON db2inst1.DEPARTMENT

       (ADMRDEPT ASC);

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

-- DDL Statements for Table db2inst1.EMPLOYEE

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

 

 

CREATE TABLE db2inst1.EMPLOYEE  (

         EMPNO CHAR(6) NOT NULL ,

         FIRSTNME VARCHAR(12) NOT NULL ,

         MIDINIT CHAR(1) ,

         LASTNAME VARCHAR(15) NOT NULL ,

         WORKDEPT CHAR(3) ,

         PHONENO CHAR(4) ,

         HIREDATE TIMESTAMP ,

         JOB CHAR(8) ,

         EDLEVEL SMALLINT NOT NULL ,

         SEX CHAR(1) ,

         BIRTHDATE TIMESTAMP ,

         SALARY DECIMAL(9,2) ,

         BONUS DECIMAL(9,2) ,

         COMM DECIMAL(9,2) );

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.EMPLOYEE

 

 

 

CREATE INDEX db2inst1.PK_EMPLOYEE ON db2inst1.EMPLOYEE

       (EMPNO ASC);

-- DDL Statements for Primary Key on Table db2inst1.EMPLOYEE

 

ALTER TABLE db2inst1.EMPLOYEE

    ADD CONSTRAINT PK_EMPLOYEE PRIMARY KEY

       (EMPNO);

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.EMPLOYEE

 

 

 

CREATE INDEX db2inst1.XEMP2 ON db2inst1.EMPLOYEE

       (WORKDEPT ASC);

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

-- DDL Statements for Table db2inst1.EMPPROJACT

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

 

 

CREATE TABLE db2inst1.EMPPROJACT  (

         EMPNO CHAR(6) NOT NULL ,

         PROJNO CHAR(6) NOT NULL ,

         ACTNO SMALLINT NOT NULL ,

         EMPTIME DECIMAL(5,2) ,

         EMSTDATE TIMESTAMP ,

         EMENDATE TIMESTAMP ) ;

 

 

 

 

 

 

 

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

-- DDL Statements for Table db2inst1.EMP_PHOTO

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

 

 

CREATE TABLE db2inst1.EMP_PHOTO  (

         EMPNO CHAR(6) NOT NULL ,

         PHOTO_FORMAT VARCHAR(10) NOT NULL ,

         PICTURE BLOB);

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.EMP_PHOTO

 

 

 

CREATE INDEX db2inst1.PK_EMP_PHOTO ON db2inst1.EMP_PHOTO

       (EMPNO ASC,

        PHOTO_FORMAT ASC);

-- DDL Statements for Primary Key on Table db2inst1.EMP_PHOTO

 

ALTER TABLE db2inst1.EMP_PHOTO

    ADD CONSTRAINT PK_EMP_PHOTO PRIMARY KEY

       (EMPNO,

        PHOTO_FORMAT);

 

 

 

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

-- DDL Statements for Table db2inst1.EMP_RESUME

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

 

 

CREATE TABLE db2inst1.EMP_RESUME  (

         EMPNO CHAR(6) NOT NULL ,

         RESUME_FORMAT VARCHAR(10) NOT NULL ,

         RESUME CLOB(5120) LOGGED NOT COMPACT ) ;

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.EMP_RESUME

 

 

 

CREATE INDEX db2inst1.PK_EMP_RESUME ON db2inst1.EMP_RESUME

       (EMPNO ASC,

        RESUME_FORMAT ASC);

-- DDL Statements for Primary Key on Table db2inst1.EMP_RESUME

 

ALTER TABLE db2inst1.EMP_RESUME

    ADD CONSTRAINT PK_EMP_RESUME PRIMARY KEY

       (EMPNO,

        RESUME_FORMAT);

 

 

 

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

-- DDL Statements for Table db2inst1.INVENTORY

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

 

 

CREATE TABLE db2inst1.INVENTORY  (

         PID VARCHAR(10) NOT NULL ,

         QUANTITY INTEGER ,

         LOCATION VARCHAR(128) );

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.INVENTORY

 

 

 

CREATE INDEX db2inst1.PK_INVENTORY ON db2inst1.INVENTORY

       (PID ASC);

-- DDL Statements for Primary Key on Table db2inst1.INVENTORY

 

ALTER TABLE db2inst1.INVENTORY

    ADD CONSTRAINT PK_INVENTORY PRIMARY KEY

       (PID);

 

 

 

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

-- DDL Statements for Table db2inst1.IN_TRAY

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

 

 

CREATE TABLE db2inst1.IN_TRAY  (

         RECEIVED TIMESTAMP ,

         SOURCE CHAR(8) ,

         SUBJECT CHAR(64) ,

         NOTE_TEXT VARCHAR(3000) );

 

 

 

 

 

 

 

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

-- DDL Statements for Table db2inst1.ORG

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

 

 

CREATE TABLE db2inst1.ORG  (

         DEPTNUMB SMALLINT NOT NULL ,

         DEPTNAME VARCHAR(14) ,

         MANAGER SMALLINT ,

         DIVISION VARCHAR(10) ,

         LOCATION VARCHAR(13) );

 

 

 

 

 

 

 

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

-- DDL Statements for Table db2inst1.PRODUCTSUPPLIER

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

 

 

CREATE TABLE db2inst1.PRODUCTSUPPLIER  (

         PID VARCHAR(10) NOT NULL ,

         SID VARCHAR(10) NOT NULL );

 

 

 

 

-- DDL Statements for Primary Key on Table db2inst1.PRODUCTSUPPLIER

 

ALTER TABLE db2inst1.PRODUCTSUPPLIER

    ADD PRIMARY KEY

       (PID,

        SID);

 

 

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

-- DDL Statements for Table db2inst1.PROJACT

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

 

 

CREATE TABLE db2inst1.PROJACT  (

         PROJNO CHAR(6) NOT NULL ,

         ACTNO SMALLINT NOT NULL ,

         ACSTAFF DECIMAL(5,2) ,

         ACSTDATE TIMESTAMP NOT NULL ,

         ACENDATE TIMESTAMP );

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.PROJACT

 

 

 

CREATE INDEX db2inst1.PK_PROJACT ON db2inst1.PROJACT

       (PROJNO ASC,

        ACTNO ASC,

        ACSTDATE ASC);

-- DDL Statements for Primary Key on Table db2inst1.PROJACT

 

ALTER TABLE db2inst1.PROJACT

    ADD CONSTRAINT PK_PROJACT PRIMARY KEY

       (PROJNO,

        ACTNO,

        ACSTDATE);

 

 

 

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

-- DDL Statements for Table db2inst1.PROJECT

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

 

 

CREATE TABLE db2inst1.PROJECT  (

         PROJNO CHAR(6) NOT NULL ,

         PROJNAME VARCHAR(24) ,

         DEPTNO CHAR(3) NOT NULL ,

         RESPEMP CHAR(6) NOT NULL ,

         PRSTAFF DECIMAL(5,2) ,

         PRSTDATE TIMESTAMP ,

         PRENDATE TIMESTAMP ,

         MAJPROJ CHAR(6) );

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.PROJECT

 

 

 

CREATE INDEX db2inst1.PK_PROJECT ON db2inst1.PROJECT

       (PROJNO ASC);

-- DDL Statements for Primary Key on Table db2inst1.PROJECT

 

ALTER TABLE db2inst1.PROJECT

    ADD CONSTRAINT PK_PROJECT PRIMARY KEY

       (PROJNO);

 

 

 

 

-- DDL Statements for Indexes on Table db2inst1.PROJECT

 

 

 

CREATE INDEX db2inst1.XPROJ2 ON db2inst1.PROJECT

       (RESPEMP ASC);

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

-- DDL Statements for Table db2inst1.SALES

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

 

 

CREATE TABLE db2inst1.SALES  (

         SALES_DATE TIMESTAMP ,

         SALES_PERSON VARCHAR(15) ,

         REGION VARCHAR(15) ,

         SALES INTEGER );

 

 

 

 

 

 

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

-- DDL Statements for Table db2inst1.STAFF

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

 

 

CREATE TABLE db2inst1.STAFF  (

         ID SMALLINT NOT NULL ,

         NAME VARCHAR(9) ,

         DEPT SMALLINT ,

         JOB CHAR(5) ,

         YEARS SMALLINT ,

         SALARY DECIMAL(7,2) ,

         COMM DECIMAL(7,2) );

 

 

 

 

 

 

 

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

-- DDL Statements for Table db2inst1.STAFFG

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

 

 

CREATE TABLE db2inst1.STAFFG  (

         ID SMALLINT NOT NULL ,

         NAME LONG ,

         DEPT SMALLINT ,

         JOB CHAR(5) ,

         YEARS SMALLINT ,

         SALARY DECIMAL(9,0) ,

         COMM DECIMAL(9,0) );

 

 

 

 

 

 

 

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

-- DDL Statements for Table db2inst1.ECONOMIC_ENTITY

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

 

 

CREATE TABLE db2inst1.ECONOMIC_ENTITY  (

         ENTITY_ID INTEGER NOT NULL ,

         ECONOMIC_ENTITY VARCHAR(128) NOT NULL ,

         CONTINENT VARCHAR(20) ) ;

 

 

 

 

-- DDL Statements for Primary Key on Table db2inst1.ECONOMIC_ENTITY

 

ALTER TABLE db2inst1.ECONOMIC_ENTITY

    ADD PRIMARY KEY

       (ENTITY_ID);

 

 

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

-- DDL Statements for Table db2inst1.GDP_BY_YEAR

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

 

 

CREATE TABLE db2inst1.GDP_BY_YEAR  (

         ENTITY_ID INTEGER NOT NULL ,

         GDP_YEAR INTEGER NOT NULL ,

         GDP_VALUE DECIMAL(15,5) NOT NULL );

 

 

 

 

-- DDL Statements for Primary Key on Table db2inst1.GDP_BY_YEAR

 

ALTER TABLE db2inst1.GDP_BY_YEAR

    ADD PRIMARY KEY

       (ENTITY_ID,

        GDP_YEAR);

 

 

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

-- DDL Statements for Table db2inst1.GDP_GROWTH_BY_YEAR

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

 

 

CREATE TABLE db2inst1.GDP_GROWTH_BY_YEAR  (

         ENTITY_ID INTEGER NOT NULL ,

         GDP_YEAR INTEGER NOT NULL ,

         GDP_VALUE DECIMAL(15,5) NOT NULL );

 

 

 

 

-- DDL Statements for Primary Key on Table db2inst1.GDP_GROWTH_BY_YEAR

 

ALTER TABLE db2inst1.GDP_GROWTH_BY_YEAR

    ADD PRIMARY KEY

       (ENTITY_ID,

        GDP_YEAR);

 

1.5.3 在目标库创建表结构

执行前面生成的脚本创建表结构

1.6 OGG初始配置

 

1.6.1 配置MGR管理进程

--源端MGR管理进程配置

$ ggsci

ggsci>create subdirs

ggsci>edit params mgr

port 7809

autostart er *

autorestart er *,waitminutes 3,retries 15

purgeoldextracts ./dirdat/*,usecheckpoints,minkeepdays 7

--目标端MGR管理进程配置

$ ggsci

ggsci>create subdirs

ggsci>edit params mgr

port 7809

autostart er *

autorestart er *,waitminutes 3,retries 15

purgeoldextracts ./dirdat/*,usecheckpoints,minkeepdays 7

ACCESSRULE, PROG *, IPADDR 192.168.1.20, ALLOW

 

1.6.2 检查MGR管理进程

--启动并检查MGR进程

ggsci>start Mgr

ggsci>info Mgr

 

1.6.3 添加OGG检查点

--只在目标端添加

ggsci

ggsci>edit params ./GLOBALS

checkpointtable oggadm.checkpoint

$ ggsci

GGSCI (tzw19c) 1> dblogin userid oggadm@tzwdb, password tzw

GGSCI (tzw19c as oggadm@tzwdb) 4> add checkpointtable oggadm.checkpoint

 

1.6.4 在源端添加补充日志,开启DML同步功能

$ ggsci

ggsci>dblogin sourcedb db2_src, userid db2inst1, password db2inst1

ggsci>info trandata db2inst1.*

ggsci>add trandata db2inst1.* 

ggsci>info trandata db2inst1.*

 

1.7 OGG配置源于目标端表结构映射

 

1.7.1 在源端添加表结构定义参数

$ ggsci

ggsci>edit params db2inst1tabs

DefsFile dirdef/db2inst1tabs.def, Purge

SourceDB db2_src, UserID db2inst1, Password db2inst1

Table db2inst1.*;

 

1.7.2 源端生成表结构定义参数

$ ./defgen paramfile dirprm/db2inst1tabs.prm

 

 

1.7.3 将生成的表结构定义参数复制到目标端

$scp dirdef/db2inst1tabs.def oracle@tzw19c:/ggs/dirdef

 

2、数据初始化

2.1 源端配置抽取进程

ggsci>add extract eini01,sourceistable

ggsci>edit params eini01

extract eini01

SourceDB db2_src,userid db2inst1,password db2inst1

rmthost 192.168.1.30,mgrport 7809

RMTTASK REPLICAT, GROUP rini01

table db2inst1.*;

 

2.2 目标端配置复制进程

ggsci>add replicat rini01,specialrun

ggsci>edit params rini01

replicat rini01

userid oggadm@tzwdb,password tzw

map db2inst1.*,target db2inst1.*;

 

2.3 源端启动抽取进程

ggsci>start eini01

 

2.4 目标端验证数据初始化情况

select count(*) from db2inst1.ACT;

select count(*) from db2inst1.CL_SCHED;

select count(*) from db2inst1.DEPARTMENT;

select count(*) from db2inst1.EMPLOYEE;

select count(*) from db2inst1.EMPPROJACT;

select count(*) from db2inst1.EMP_PHOTO;

select count(*) from db2inst1.EMP_RESUME;

select count(*) from db2inst1.INVENTORY;

select count(*) from db2inst1.IN_TRAY;

select count(*) from db2inst1.ORG;

select count(*) from db2inst1.PRODUCTSUPPLIER;

select count(*) from db2inst1.PROJACT;

select count(*) from db2inst1.PROJECT;

select count(*) from db2inst1.SALES;

select count(*) from db2inst1.STAFF;

select count(*) from db2inst1.STAFFG;

select count(*) from db2inst1.ECONOMIC_ENTITY;

select count(*) from db2inst1.GDP_BY_YEAR;

select count(*) from db2inst1.GDP_GROWTH_BY_YEAR;

select count(*) from db2inst1.tzw1;

 

3、OGG配置数据同步

3.1 源端配置

 

3.1.1源端配置extract抽取进程

cd /ggs

mkdir -p ./dirdat/edb2inst

mkdir -p ./dirrpt/edb2inst

ggsci

GGSCI (tzwdb2) 1> edit params edb2inst

extract edb2inst

SourceDB db2_src,userid db2inst1,password db2inst1

exttrail ./dirdat/edb2inst/ex

discardfile ./dirrpt/edb2inst/edb2inst.dsc,append,megabytes 200

TABLE db2inst1.*;

ggsci > add extract edb2inst,tranlog,begin now

ggsci > add exttrail ./dirdat/edb2inst/ex,extract edb2inst,megabytes 200

ggsci > info all

ggsci> start edb2inst

ggsci> stop edb2inst

 

3.1.2 源端配置pump传输进程

cd /ggs

mkdir -p ./dirdat/rdb2inst

mkdir -p ./dirrpt/rdb2inst

ggsci

ggsci> edit params pdb2inst

extract pdb2inst

SourceDB db2_src,userid db2inst1,password db2inst1

PASSTHRU

RMTHOST tzw19c,MGRPORT 7809

rmttrail ./dirdat/rdb2inst/re

discardfile ./dirrpt/rdb2inst/rdb2inst.dsc,append,megabytes 200

TABLE db2inst1.*;

ggsci> add extract pdb2inst,exttrailsource ./dirdat/edb2inst/ex

ggsci> add rmttrail ./dirdat/rdb2inst/re,extract pdb2inst,megabytes 200

ggsci> info pdb2inst

 

3.2 目标端配置

 

3.2.1 目标端配置replicat复制进程

cd /ggs

mkdir -p ./dirdat/rdb2inst

mkdir -p ./dirrpt/rdb2inst

ggsci> edit params rdb2inst

replicat rdb2inst

userid oggadm@tzwdb, Password tzw

--sourcedefs ./dirdef/db2inst1tabs.def

handlecollisions

assumetargetdefs

discardfile ./dirrpt/rdb2inst/rdb2inst.dsc,append,megabytes 200

map db2inst1.*,target db2inst1.*;

ggsci> add replicat rdb2inst exttrail ./dirdat/rdb2inst/re,checkpointtable oggadm.checkpoint

 

3.3 数据同步

 

3.3.1 源端

ggsci>start edb2inst

ggsci>start pdb2inst

ggsci>info all

 

3.3.2 目标端

ggsci>start rdb2inst

ggsci>view report rdb2inst

 

3.3.3 验证同步

--源端插入数据

cd /db2data/ddl

db2 connect to db2_src

db2 -tvf economic_entity.sql

select count(*) from economic_entity

--目标端验证同步情况

select count(*) from economic_entity

--查看报告

--源端

Send Extract edb2inst, Report

view report edb2inst

 

--目标端

send replicat rdb2inst,report

view report rdb2inst

 

--查看统计信息

--源端

Send Extract edb2inst, Stats

 

--目标端

Send Replicat rdb2inst, Stats

 

4、数据验证

4.1验证数据结构

--源端导出表结构

db2look -d db2_src -e -a -x -i db2inst1 -w db2inst1 -o ddlfile.sql

--与目标端进行对比

 

4.2 验证数据对象

--目标端

select * from user_tables

 

4.3 验证数据记录数

select count(*) from db2inst1.ACT;

select count(*) from db2inst1.CL_SCHED;

select count(*) from db2inst1.DEPARTMENT;

select count(*) from db2inst1.EMPLOYEE;

select count(*) from db2inst1.EMPPROJACT;

select count(*) from db2inst1.EMP_PHOTO;

select count(*) from db2inst1.EMP_RESUME;

select count(*) from db2inst1.INVENTORY;

select count(*) from db2inst1.IN_TRAY;

select count(*) from db2inst1.ORG;

select count(*) from db2inst1.PRODUCTSUPPLIER;

select count(*) from db2inst1.PROJACT;

select count(*) from db2inst1.PROJECT;

select count(*) from db2inst1.SALES;

select count(*) from db2inst1.STAFF;

select count(*) from db2inst1.STAFFG;

select count(*) from db2inst1.ECONOMIC_ENTITY;

select count(*) from db2inst1.GDP_BY_YEAR;

select count(*) from db2inst1.GDP_GROWTH_BY_YEAR;

select count(*) from db2inst1.tzw1;

 

4.4 验证数据记录

--对比源端与目标端关见业务表数据记录一致性

 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论