此次迁移采用的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 验证数据记录
--对比源端与目标端关见业务表数据记录一致性 |