db2look+db2move工具简介及其应用

一.背景

在平常工做中,常常有数据的导入/导出需求,例如将某些表的数据保存成文件形式,或者将文件数据加载到数据库等。为此,DB2提供了不少工具供你们选择,如export、import、load、db2dart、db2move。图1直观地展现了这几种工具的使用,最上面虚线部分是工具所支持的导入/导出文件格式,中间html

1.png

图1sql

因为export与import在其它数据库中也有较多的应用,本文再也不对其作详细说明。在DB2中,load工具的使用较为频繁,此前已有其它同事作了介绍,这里也再也不深刻讨论。db2dart工具会在后续分享中进行介绍。数据库

本文主要对db2move工具以及与之相配合的db2look工具作简要介绍。服务器

二.db2look工具简介及使用

在数据迁移前,咱们须要在目标端对数据对象作定义。db2look能够用来产生表、视图、索引、函数、触发器、存储过程等对象的定义语句。对于其详细用法,能够经过db2look -h进行查看帮助。网络

1.  db2look的选项及用法

db2inst1@suse11:~> db2look -happ

db2look: Generates DDLs to recreate the objects defined in a databaseide

 

Syntax: db2look -d DBname [-e] [-xs] [-xdir Path] [-u Creator] [-z Schema]函数

                          [-t Tname1 Tname2...TnameN] [-tw Tname] [-xdep] [-xddep]工具

                          [-n Nname1 Nname2...NnameN] [-nw Nname]布局

                          [-o Fname] [-a] [-m] [-c] [-r] [-l] [-x] [-xd] [-f] [-h]

                          [-fd] [-td x] [-noview] [-i userID] [-w password]

                          [-v Vname1 Vname2 ... VnameN] [-dp] [-ct]

                          [-wrapper WrapperName] [-server ServerName] [-nofed]

                          [-wlm] [-ap] [-mod] [-cor] [-wrap] [-noimplschema] [-nostatsclause]

                          [-wrapper WrapperName] [-server ServerName][-fedonly] [-nofed]

 

        db2look [-h]

 

对于参数的说明:

        -d: 数据库名:这必须指定

        -e: 抽取复制数据库所须要的 DDL 文件

             此选项将生成包含 DDL 语句的脚本

             能够对另外一个数据库运行此脚本以便从新建立数据库对象

             此选项能够和 -m 选项一块儿使用

        -u: 建立程序标识:若 -u 和   -a 都未指定,则将使用 $USER

             若指定了 -a 选项,则将忽略 -u 选项

        -z: 模式名:若是同时指定了 -z 和 -a,则将忽略 -z

             联合部分的模式名被忽略

        -t: 生成指定表的统计信息

             能够指定的表的数目最多为 30

        -h: 更详细的帮助消息

        -o: 将输出重定向到给定的文件名

            若未指定 -o 选项,则输出将转到 stdout

        -a: 为全部建立程序生成统计信息

             若指定了此选项,则将忽略 -u 选项

        -m: 在模拟方式下运行 db2look 实用程序

            此选项将生成包含 SQL UPDATE 语句的脚本

            这些 SQL UPDATE 语句捕获全部统计信息

            能够对另外一个数据库运行此脚本以便复制初始的那一个

            当指定了 -m 选项时,将忽略 -p、-g 和 -s 选项

        -c: 不要生成模拟的 COMMIT 语句

            除非指定了 -m 或 -e,不然将忽略此选项

            将不生成 CONNECT 和 CONNECT RESET 语句

        -r: 不要生成模拟的 RUNSTATS 语句

            缺省值为 RUNSTATS。仅当指定了 -m 时,此选项才有效

        -l: 生成数据库布局:数据库分区组、缓冲池和表空间。

        -x: 若是指定了此选项,则 db2look 实用程序将生成受权 DDL

            对于现有已受权特权,不包括对象的原始定义器

         -xd: 若是指定了此选项,则 db2look 实用程序将生成受权 DDL

            对于现有已受权特权,包括对象的原始定义器

        -f: 抽取配置参数和环境变量

            若是指定此选项,将忽略 -wrapper 和 -server 选项

         -td: 将 x 指定为语句定界符(缺省定界符为分号(;))

            应该与 -e 选项一块儿使用(若是触发器或者 SQL 例程存在的话)

        -p: 使用简单文本格式

        -s: 生成 postscript. 文件

            此选项将为您生成 postscript. 文件

            当设置了此选项时,将除去全部 latex 和 tmp ps 文件

            所需的(非 IBM)软件:LaTeX   和 dvips

            注意:文件 psfig.tex 必须在 LaTeX 输入路径中

        -g: 使用图形来显示索引的页取装对

            必须安装 Gnuplot,而且 必须在您的 LaTeX 输入路径中

            还将随 LaTeX 文件一块儿生成 文件

        -i: 登陆到数据库驻留的服务器时所使用的用户标识

           -w: 登陆到数据库驻留的服务器时所使用的密码

          -noview: 不要生成 CREATE VIEW ddl 语句

-wrapper: 为适用于此包装器的联合对象生成 DDL

            生成的对象可能包含下列各项:

            包装器、服务器、用户映射、别名、类型映射、

            函数模板、函数映射和索引规范

            -server: 为适用于此服务器的联合对象生成 DDL

            生成的对象可能包含下列各项:

            包装器、服务器、用户映射、别名、类型映射、

            函数模板、函数映射和索引规范

          -nofed: 不要生成 Federated DDL

              若是指定此选项,将忽略 -wrapper 和 -server 选项

   

在DB2 V10.5.0.5版本中,db2look又添加了几个很是实用的选项:

-ct: 按照对象建立时间生成DDL语句

-noimplschema: 不要为隐式建立的模式生成CREATE SCHEMA ddl

-nostatsclause: 不要在CREATE INDEX DDL中包含统计子句

-createdb: 生成用于建立源数据库的CREATE DATABASE命令

-printdbcfg: 为数据库配置参数生成UPDATE DB CFG命令

 

2.  db2look的几种常见用法:

1)导出数据库的建库指令:

db2look -d sample -createdb -o createdb.sql

2)导出数据库配置参数的更改指令:

db2look -d sample -printdbcfg -o dbcfg.sql

3)导出数据库全部对象的建立指令:

db2look -d sample -e -l -o sample.ddl

4)导出单张表的表结构:

db2look -d db_name -e -t schema_name.tab_name -nofed -o tab_name.ddl

5)导出数据库受权指令:

db2look -d sample -x -o grant.sql

 

3.  db2look的应用

1) 导出数据库的建库指令:

DB2自带了sample数据库,能够经过db2sampl指令来建立。db2sampl指令是由许多的指令封装而成的,这里咱们经过db2look工具来导出sample数据库的建库指令。

db2inst1@suse11:~> db2look -d sample -createdb -o createdb.sql

-- No userid was specified, db2look tries to use Environment variable USER

-- USER is: DB2INST1

-- Output is sent to file: createdb.sql

db2inst1@suse11:~> cat createdb.sql

-- This CLP file was created using DB2LOOK Version "10.5"

-- Timestamp: 20180113 星期六 210556

-- Database Name: SAMPLE        

-- Database Manager Version: DB2/LINUXX8664 Version 10.5.6

-- Database Codepage: 1208

-- Database Collating Sequence is: IDENTITY

-- Alternate collating sequence(alt_collate): null

-- varchar2 compatibility(varchar2_compat): OFF

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

-- Generate CREATE DATABASE command

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

CREATE DATABASE SAMPLE

        AUTOMATIC STORAGE YES

        ON '/home/db2inst1'

        DBPATH ON '/home/db2inst1/'

        USING CODESET UTF-8 TERRITORY CN

        COLLATE USING IDENTITY

        PAGESIZE 8192

        DFT_EXTENT_SZ 32

        CATALOG TABLESPACE MANAGED BY AUTOMATIC STORAGE

         EXTENTSIZE 4

         OVERHEAD 7.500000

         TRANSFERRATE 0.060000

         NO FILE SYSTEM CACHING

         AUTORESIZE YES

         INITIALSIZE 32 M

         MAXSIZE NONE

        TEMPORARY TABLESPACE MANAGED BY AUTOMATIC STORAGE

         EXTENTSIZE 32

         OVERHEAD 7.500000

         TRANSFERRATE 0.060000

         FILE SYSTEM CACHING

        USER TABLESPACE MANAGED BY AUTOMATIC STORAGE

         EXTENTSIZE 32

         OVERHEAD 7.500000

         TRANSFERRATE 0.060000

         NO FILE SYSTEM CACHING

         AUTORESIZE YES

         INITIALSIZE 32 M

         MAXSIZE NONE ;

CONNECT TO SAMPLE;

COMMIT WORK;

CONNECT RESET;

TERMINATE;

2) 导出sample数据库配置参数的更改指令:

db2inst1@suse11:~> db2look -d sample -printdbcfg -o dbcfg.sql

-- No userid was specified, db2look tries to use Environment variable USER

-- USER is: DB2INST1

-- Output is sent to file: dbcfg.sql

db2inst1@suse11:~> cat dbcfg.sql

-- This CLP file was created using DB2LOOK Version "10.5"

-- Timestamp: 20180113 星期六214906

-- Database Name: SAMPLE        

-- Database Manager Version: DB2/LINUXX8664 Version 10.5.6

-- Database Codepage: 1208

-- Database Collating Sequence is: IDENTITY

-- Alternate collating sequence(alt_collate): null

-- varchar2 compatibility(varchar2_compat): OFF

CONNECT TO SAMPLE;

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

-- Generate UPDATE DB CFG commands

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

-- The db2look command generates the UPDATE DB CFG statements

-- to replicate the database configuration parameters based on

-- the current values in the source database.

-- For the configuration parameters which support AUTOMATIC,

-- you need to add AUTOMATIC to the end

-- if you want the DB2 database to automatically adjust them.

--UPDATE DB CFG FOR SAMPLE USING ALT_COLLATE      ;

UPDATE DB CFG FOR SAMPLE USING STMT_CONC          OFF ;

UPDATE DB CFG FOR SAMPLE USING DISCOVER_DB        ENABLE ;

(此处省略若干行)

UPDATE DB CFG FOR SAMPLE USING LOGARCHMETH1  DISK:/home/db2inst1/arch/ ;

UPDATE DB CFG FOR SAMPLE USING LOG_DDL_STMTS      NO ;

UPDATE DB CFG FOR SAMPLE USING LOG_APPL_INFO      NO ;

UPDATE DB CFG FOR SAMPLE USING DFT_SCHEMAS_DCC    NO ;

(此处省略若干行)

COMMIT WORK;

CONNECT RESET;

TERMINATE;

3) 导出sample数据库全部对象的建立指令:

db2inst1@suse11:~> db2look -d sample -e -l -o sample.ddl

-- No userid was specified, db2look tries to use Environment variable USER

-- USER is: DB2INST1

-- Creating DDL for table(s)

-- Output is sent to file: sample.ddl

db2inst1@suse11:~> cat sample.ddl

-- This CLP file was created using DB2LOOK Version "10.5"

-- Timestamp: 20180113 星期六 215847

-- Database Name: SAMPLE        

-- Database Manager Version: DB2/LINUXX8664 Version 10.5.6

-- Database Codepage: 1208

-- Database Collating Sequence is: IDENTITY

-- Alternate collating sequence(alt_collate): null

-- varchar2 compatibility(varchar2_compat): OFF

CONNECT TO SAMPLE;

(因为建立指令过长,此处省略)

COMMIT WORK;

CONNECT RESET;

TERMINATE;

4)以sample库的表sales为例,导出单张表的建立指令:

db2inst1@suse11:~> db2look -d sample -e -t db2inst1.sales -nofed -o sales.ddl

-- No userid was specified, db2look tries to use Environment variable USER

-- USER is: DB2INST1

-- The db2look utility will consider only the specified tables

-- Creating DDL for table(s)

-- Output is sent to file: sales.ddl

db2inst1@suse11:~> cat sales.ddl

-- This CLP file was created using DB2LOOK Version "10.5"

-- Timestamp: 20180113 星期六 214117

-- Database Name: SAMPLE        

-- Database Manager Version: DB2/LINUXX8664 Version 10.5.6

-- Database Codepage: 1208

-- Database Collating Sequence is: IDENTITY

-- Alternate collating sequence(alt_collate): null

-- varchar2 compatibility(varchar2_compat): OFF

CONNECT TO SAMPLE;

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

-- DDL Statements for Table "DB2INST1"."SALES"

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

CREATE TABLE "DB2INST1"."SALES"  (

                  "SALES_DATE" DATE ,

                  "SALES_PERSON" VARCHAR(15 OCTETS) ,

                  "REGION" VARCHAR(15 OCTETS) ,

                  "SALES" INTEGER )  

                 IN "USERSPACE1" 

                 ORGANIZE BY ROW;

COMMIT WORK;

CONNECT RESET;

TERMINATE;

三.db2move工具简介及使用

    db2move工具用来在两个数据库之间进行数据迁移,特别适合于不一样平台、表数量比较多的状况。此工具是对export、import、load命令的封装,根据系统表得到用户表,将数据库导出为PC/IXF格式,同时会产生一个db2move.1st文件,记录导出表和数据文件名字,将这些文件传输到目标系统中,经过load或import进行导入。

 

1.  IBM官网对于db2move的语法介绍:

                            .----------------------------.   

                            V                            |   

>>-db2move--dbname--action----+------------------------+-+-----><

                              +- -tc--table_definers---+     

                              +- -tn--table_names------+     

                              +- -sn--schema_names-----+     

                              +- -ts--tablespace_names-+     

                              +- -tf--filename---------+     

                              +- -io--import_option----+     

                              +- -lo--load_option------+     

                              +- -co--copy_option------+     

                              +- -l--lobpaths----------+     

                              +- -u--userid------------+     

                              +- -p--password----------+     

                              '- -aw-------------------'     

2.  如下是用中文介绍db2move的用法:(本段中文说明引自网络)

db2move   命令

db2move   <database-name> <action> [<option> <value>]

首先,必须指定数据库名(想要移动的表所在的数据库)和要执行的操做(export 和 import 或 load)。而后指定一个选项来定义操做的范围。例如,能够将一个操做限制在特定的表(-tn)、表空间(-ts)、表建立者(-tc)或模式名(-sn)范围内。指定表、表空间或表的建立者的一个子集只对 export 操做有效。若是指定多个值,就必须使用逗号将其分隔开;在值列表项之间不容许有空格。能够指定的项最多为 10 个。

另外,也能够指定 -tf 选项,此时要使用一个文件名做为参数,其中列出了要导出的表名;在该文件中,每行只能列出一个完整的表名。您还能够指定如下内容:

-tn -表名,导出单一表

-tf - 文件名,文件中每行记录一个完整的表名

-ts -表空间名称,用于导出某个表空间下的全部数据

-tc -表建立者,导出某用户建立的全部数据

-sn -模式名,用于导出某个模式下的全部数据

 

-io import-option

指定 DB2 的 import 工具能够运行的一种模式。有效的选项有: CREATE、 INSERT、   INSERT_UPDATE、 REPLACE 和   REPLACE_CREATE。缺省值为 REPLACE_CREATE。有关这些模式的更多内容,请参阅 DB2 的产品文档,能够从 DB2 技术支持得到这些文档。

-lo   load-option

指定 DB2 的 load 工具能够运行的一种模式。有效的选项有:INSERT 和 REPLACE。缺省值为 INSERT。 有关这些模式的更多内容,请参阅 DB2 的产品文档,能够从 DB2 技术支持得到这些文档。

-l   lobpaths

指定要建立或查找的 LOB 文件的位置。必须指定一个或多个绝对路径名。若是指定了多个绝对路径,就必须使用逗号将其分隔开;值之间不容许有空格。缺省值是当前目录。

-u userid 

指定一个用户 ID,该工具可使用这个用户 ID 登陆到远程系统上。

-p   password

指定对该用户进行认证的密码;该工具须要使用一个有效的用户 ID 和密码登陆到远程系统上。

(注:本段中文说明引自网络)

https://www.cnblogs.com/xiaojianblogs/p/6224356.html?utm_source=itdadao&utm_medium=referral

 

须要补充说明的是,在实际环境中,有些数据表会采用identity标识列,而db2move没法迁移这种类型的表数据。

3.  db2look+db2move导出试验

1) 试验目的:利用db2look+db2move工具,将192.168.29.142主机db2inst1实例的sample数据库迁移至192.168.29.135主机db2inst1实例上。

2) 建立SAMPLE数据库,并建立带有identity标识列的表cust1。

db2inst1@suse11:~> db2sampl

 

  Creating database "SAMPLE"...

  Connecting to database "SAMPLE"...

  Creating tables and data in schema "DB2INST1"...

  Creating tables with XML columns and XML data in schema "DB2INST1"...

 

  'db2sampl' processing complete.

 

db2inst1@suse11:~> db2 connect to sample

 

   Database Connection Information

 

 Database server        = DB2/LINUXX8664 10.5.6

 SQL authorization ID   = DB2INST1

 Local database alias   = SAMPLE

 

db2inst1@suse11:~> db2 "create table cust1(custno smallint not null generated always as identity (start with 100,increment by 1),custname varchar(16)) in USERSPACE1"

DB20000I  The SQL command completed successfully.

db2inst1@suse11:~> db2 "select * from cust1 with ur"

 

CUSTNO CUSTNAME       

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

 

  0 record(s) selected.

 

db2inst1@suse11:~> db2 "insert into cust1(custname) values('ma')"

DB20000I  The SQL command completed successfully.

db2inst1@suse11:~> db2 "insert into cust1(custname) values('miao')"

DB20000I  The SQL command completed successfully.

db2inst1@suse11:~> db2 "insert into cust1(custname) values('miaomiao')"

DB20000I  The SQL command completed successfully.

db2inst1@suse11:~> db2 "select * from cust1 with ur"

 

CUSTNO CUSTNAME       

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

   100 ma             

   101 miao           

   102 miaomiao       

 

  3 record(s) selected.

3) 使用db2look工具,导出192.168.29.142主机SAMPLE数据库的建库指令以及全部对象的定义。

db2inst1@suse11:~/ddl> db2look -d sample -createdb -o createdb.sql

-- No userid was specified, db2look tries to use Environment variable USER

-- USER is: DB2INST1

-- Output is sent to file: createdb.sql

-- Binding package automatically ...

-- Bind is successful

-- Binding package automatically ...

-- Bind is successful

db2inst1@suse11:~/ddl> db2look -d sample -e -l -o sample.ddl

-- No userid was specified, db2look tries to use Environment variable USER

-- USER is: DB2INST1

-- Creating DDL for table(s)

-- Output is sent to file: sample.ddl

4) 将sample库的数据经过db2move导出,新建目录db2move,用于存放导出的数据

db2inst1@suse11:~> mkdir db2move

db2inst1@suse11:~> cd db2move

db2inst1@suse11:~/db2move> db2move sample export

 

Application code page not determined, using ANSI codepage 1208

 

*****  DB2MOVE  *****

 

Action:  EXPORT

 

Start time:  Sat Jan 13 23:20:36 2018

 

 

Connecting to database SAMPLE ... successful!  Server : DB2 Common Server V10.5.6

 

EXPORT:     18 rows from table "DB2INST1"."ACT"

EXPORT:      0 rows from table "DB2INST1"."CATALOG"

EXPORT:      5 rows from table "DB2INST1"."CL_SCHED"

EXPORT:      6 rows from table "DB2INST1"."CUSTOMER"

EXPORT:     14 rows from table "DB2INST1"."DEPARTMENT"

EXPORT:     42 rows from table "DB2INST1"."EMPLOYEE"

EXPORT:  10000 rows from table "DB2INST1"."EMPMDC"

EXPORT:     73 rows from table "DB2INST1"."EMPPROJACT"

EXPORT:      8 rows from table "DB2INST1"."EMP_PHOTO"

EXPORT:      8 rows from table "DB2INST1"."EMP_RESUME"

EXPORT:    156 rows from table "SYSTOOLS"."HMON_ATM_INFO"

EXPORT:      0 rows from table "SYSTOOLS"."HMON_COLLECTION"

EXPORT:      4 rows from table "DB2INST1"."INVENTORY"

EXPORT:      3 rows from table "DB2INST1"."IN_TRAY"

EXPORT:      8 rows from table "DB2INST1"."ORG"

EXPORT:      5 rows from table "SYSTOOLS"."POLICY"

EXPORT:      4 rows from table "DB2INST1"."PRODUCT"

EXPORT:      2 rows from table "DB2INST1"."PRODUCTSUPPLIER"

EXPORT:     65 rows from table "DB2INST1"."PROJACT"

EXPORT:     20 rows from table "DB2INST1"."PROJECT"

EXPORT:      6 rows from table "DB2INST1"."PURCHASEORDER"

EXPORT:     41 rows from table "DB2INST1"."SALES"

EXPORT:     35 rows from table "DB2INST1"."STAFF"

EXPORT:     35 rows from table "DB2INST1"."STAFFG"

EXPORT:      2 rows from table "DB2INST1"."SUPPLIERS"

 

Disconnecting from database ... successful!

 

End time:  Sat Jan 13 23:20:41 2018

检查确认文件已经导出

db2inst1@suse11:~/db2move> ls

db2move.lst  tab11.ixf  tab14.ixf  tab17a.001.lob  tab19.ixf  tab21.ixf (此处省略其余若干文件)

5) 将上述的creatdb.sql、sample.ddl以及经过db2move导出的数据文件传输至目标端

db2inst1@suse11:~> cd ~

db2inst1@suse11:~> tar -cvf db2move.tar db2move

db2inst1@suse11:~> scp ./ddl/* db2inst1@192.168.29.135:/home/db2inst1/

db2inst1@suse11:~> scp ./db2move.tar db2inst1@192.168.29.135:/home/db2inst1/

6) 在目标端建立数据库、数据库对象

[db2inst1@localhost ~]$ db2 -tvf createdb.sql

CREATE DATABASE SAMPLE AUTOMATIC STORAGE YES ON '/home/db2inst1' DBPATH ON '/home/db2inst1/' USING CODESET UTF-8 TERRITORY CN COLLATE USING IDENTITY PAGESIZE 8192 DFT_EXTENT_SZ 32 CATALOG TABLESPACE MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 4 NO FILE SYSTEM CACHING AUTORESIZE YES INITIALSIZE 32 M MAXSIZE NONE TEMPORARY TABLESPACE MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 32 FILE SYSTEM CACHING USER TABLESPACE MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 32 NO FILE SYSTEM CACHING AUTORESIZE YES INITIALSIZE 32 M MAXSIZE NONE

DB20000I  The CREATE DATABASE command completed successfully.

 

[db2inst1@localhost ~]$ db2 -tvf sample.ddl

(此处省略若干行)

DB20000I  The SQL command completed successfully.

7)  对象建立完成后,须要与原库作对比,检查两边对象数目是否一致

原库对象数目:

db2inst1@suse11:~/ddl> db2 "select count(*) from syscat.tables with ur"

 

1         

-----------

        444

 

  1 record(s) selected.

 

db2inst1@suse11:~/ddl> db2 "select count(*) from syscat.indexes with ur"

 

1         

-----------

        396

 

  1 record(s) selected.

目标端对象数目:

[db2inst1@localhost ~]$ db2 "select count(*) from syscat.tables with ur"

 

1         

-----------

        444

 

  1 record(s) selected.

 

[db2inst1@localhost ~]$ db2 "select count(*) from syscat.indexes with ur"

 

1         

-----------

        396

经检查,两边数据库对象数目一致。

8)  将数据经过db2move导入

[db2inst1@localhost db2move]$ db2move sample load

 

Application code page not determined, using ANSI codepage 1208

 

*****  DB2MOVE  *****

 

Action:  LOAD

 

Start time:  Sun Jan 14 01:06:55 2018

 

 

Connecting to database SAMPLE ... successful!  Server : DB2 Common Server V10.5.6

 

Binding package automatically ... /home/db2inst1/sqllib/bnd/db2common.bnd ... successful!

 

Binding package automatically ... /home/db2inst1/sqllib/bnd/db2move.bnd ... successful!

 

* LOAD:  table "DB2INST1"."ACT"                

  -Rows read:         18

  -Loaded:            18

  -Rejected:           0

  -Deleted:            0

  -Committed:         18

(此处省略若干行)

* LOAD:  table "DB2INST1"."CUST1"             

***  WARNING 3107.  Check message file tab4.msg!

***  SQL Warning!  SQLCODE is  3107

***  SQL3107W  There is at least one warning message in the message file.

 

  -Rows read:          3

  -Loaded:             0

  -Rejected:           3

  -Deleted:            0

  -Committed:          3

(此处省略若干行)

Disconnecting from database ... successful!

 

End time:  Sun Jan 14 01:07:02 2018

9)  经过检查原库与目标库表的条数,验证迁移数据的准确性,以sales表为例:

db2inst1@suse11:~/ddl> db2 "select count(*) from sales with ur"

 

1         

-----------

         41

 

  1 record(s) selected.

[db2inst1@localhost db2move]$ db2 "select count(*) from sales with ur"

 

1         

-----------

         41

 

  1 record(s) selected.

 

10)      从第(8)步的信息,咱们能够看到,因为有identity标识列的存在,表CUST1的数据并无被导入到目标库中,所以须要单独对其进行装载数据。

[db2inst1@localhost db2move]$ db2 "select * from cust1 with ur"

 

CUSTNO CUSTNAME       

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

 

  0 record(s) selected.

 

从msg文件能够得知,表CUST1对应的数据文件为tab4.ixf,将其装载到表CUST1中。

 

[db2inst1@localhost db2move]$ db2 "load from tab4.ixf of ixf modified by IDENTITYOVERRIDE insert into CUST1"

(此处省略若干行)

Number of rows read         = 3

Number of rows skipped      = 0

Number of rows loaded       = 3

Number of rows rejected     = 0

Number of rows deleted      = 0

Number of rows committed    = 3

[db2inst1@localhost db2move]$ db2 "select * from CUST1 with ur"

 

CUSTNO CUSTNAME       

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

   100 ma             

   101 miao           

   102 miaomiao       

 

  3 record(s) selected.

 

db2 update db   cfg for <dbname> using LOGSECOND   100

11)      执行到这里,数据的迁移基本上算是“完工”了。可是因为LOAD装载不会检查表的参考完整性约束和检查约束,所以须要进行数据完整性检查。执行如下SQL,找出处于set integrity pending状态的表:

 

[db2inst1@localhost db2move]$ db2 "select char(TABNAME,20) TABNAME,STATUS,ACCESS_MODE,SUBSTR(CONST_CHECKED,1,1) FK_CHECKED,SUBSTR(CONST_CHECKED,2,1) CC_CHECKED FROM SYSCAT.TABLES WHERE STATUS='C' with ur"

 

TABNAME              STATUS ACCESS_MODE FK_CHECKED CC_CHECKED

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

DEPARTMENT           C      N           N          Y        

EMPLOYEE             C      N           N          N        

EMP_PHOTO            C      N           N          Y        

EMP_RESUME           C      N           N          Y        

PROJECT              C      N           N          Y        

PROJACT              C      N           N          Y         

EMPPROJACT           C      N           N          Y        

ACT                  C      N           N          Y        

ADEFUSR              C      N           Y          Y        

PURCHASEORDER        C      N           N          Y        

 

  10 record(s) selected.

有10张表处于set integrity pending状态,将这些表解除该状态后,本次的迁移才算是真正的完工。解除set integrity pending状态步骤也是较为繁琐的,本文不作深刻探讨。

 

四.试验总结

本文使用db2look+db2move工具迁移作了较为完整的介绍,力求详细的同时,整个过程也会显得较为繁琐。在平常的迁移操做中,因为操做稍显繁琐,并且有其余工具的存在,db2move工具使用的频率较低,甚至不使用。而迁移环节离不开对象的定义,所以db2look工具则是不可或缺的。笔者认为,对于db2move,有必定的了解认识便可,不须要过于深刻地研究;而用好db2look工具,则对于迁移、数据库对象的理解会有更深的认识,值得深刻学习。

相关文章
相关标签/搜索