# DB2move命令进行全库迁移

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-11T05:20:00.000Z
> 分类: 云主机
> 标签: 数据库, 存储
> 原文链接: http://117.50.162.249:3000/yun/articles/1353

---

# DB2move命令进行全库迁移

> 来源: https://www.ucloud.cn/yun/129511.html
> 作者: IT那活儿
> 发布日期: 发布于2023-01-11 13:20

DB2move命令进行全库迁移

# **点击上方“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那活儿（上海新炬王翦团队）

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129511/images/129511_000.png)