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

DB2move命令进行全库迁移

IT那活儿 2022-05-16
3182

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!! 

 

1

迁移准备

DB2版本:V9.7
准备两台虚拟机:HADR1     HADR2

2

db2move的适用情况

db2move与db2look在数据迁移中的一次实践。
适用范围:当需要对数据库进行数据迁移时,数据迁移的首选比如是备份重定向恢复,但是部分无法进行此操作时,可以选择db2move与db2look,以及不同操作系统的数据库迁移工作等。

3

HADR1上进行的工作

首选创建一张表用于实验:
[db2inst1@HADR1 ~]$ db2 "create table cfsource2 (name varchar(10)) "DB20000I The SQL command completed successfully.
创建一个存储过程用于批量插入数据:
[db2inst1@HADR1 ~]$ db2 "CREATE PROCEDURE insert_cf () DYNAMIC RESULT SETS 1 P1: BEGIN declare a int; set a=1; loop1: LOOP if(a<=1000) then insert into cfsource2(NAME) values('f'); set a=a+1; else leave loop1; end if; end loop loop1; END P1"DB20000I The SQL command completed successfully.
调用存储过程:
[db2inst1@HADR1 ~]$ db2 call insert_cfReturn Status = 0
验证数据插入结果:
[db2inst1@HADR1 ~]$ db2 "select count(*) from cfsource2"1-----------1000[db2inst1@HADR1 ~]$ db2 "select * from cfsource2 fetch first 1 rows only"NAME----------1
首先将数据库sample的表结构全部导出:
[db2inst1@HADR1 ~]$ db2look -d sample -e -l -o db2look_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: db2look_sample.ddl-- Binding package automatically ...-- Bind is successful-- Binding package automatically ...-- Bind is successful
将数据库sample的数据进行全库导出。
被导出的数据在没有指定目录的情况下,会被放置在当前目录。
所以最好提前创建一个目录用于放置数据:
[db2inst1@HADR1 backup]$ db2move sample exportApplication code page not determined, using ANSI codepage 1208***** DB2MOVE *****Action: EXPORTStart time: Thu Mar 4 06:18:50 2021Connecting to database SAMPLE ... successful! Server : DB2 Common Server V9.7.0EXPORT: 18 rows from table "DB2INST1"."ACT"EXPORT: 0 rows from table "DB2INST1"."CATALOG"
将存放数据的文件夹与生成的数据库表结构db2look_sample.ddl,一同传入到用于迁移恢复的目标机器HADR2中。

4

HADR2中的工作

下面,我们需要在新的DB2实例中将db2look_sample.ddl进行一些变动,变动的主要内容为如果HADR2中的数据库名与db2look_sample.ddl的数据库名不同的话,需要将db2look_sample.ddl中的数据库名进行更改,同时针对HADR2中的数据库目录对db2look_sample.ddl的数据库目录进行更改。
完成上述内容后就可以开始进行数据迁移了。
在目标库中执行db2look_sample.ddl文件:
[db2inst1@HADR1 ~]$ db2 -tvf db2look_sample.ddl
开始对sample数据库的数据进行导入:
[db2inst1@HADR1 backup]$ cd home/db2inst1/db2inst1/backup[db2inst1@HADR1 backup]$ db2move sample load
导入完成,开始对数据进行检查:
[db2inst1@HADR1 backup]$ db2 "select * from cfsource2 fetch first 1 rows only"NAME----------11 record(s) selected.
数据存在,数据导入成功。
在进行导入的过程中,需要注意的是执行 db2move命令时的当前目录下存在被导出的数据才可以进行。
另外我们需要注意数据库的CODEPAGE编码是否相同,在执行该命令前,我们可以现使用db2set -all来查看CODEPAGE是否相同,否则数据无法进行导入。

END

 



本文作者:干建宇

本文来源:IT那活儿(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论