DB2数据库的迁移

需求说明:不同操作系统平台下,数据库之间的同步。

一、操作系统相同之脱机备份

DB2命令:BACKUP 和 RESTORE 进行备份和还原解决。

--断开连接
db2 force application all  
--备份数据库      
db2 backup database  to    
--恢复数据库,20161101134642 为备份文件时间戳      
db2 restore database  from  taken at 20161101134642                                

据向下兼容原则,版本相同或者低版本的数据库可以还原在高版本上。

二、操作系统不同,或者源数据库版本较高

DB2 提供了两个非常实用的工具:
★数据迁移工具 db2move
★数据字典获取工具 db2look
以下为Windows 环境迁移到Linux下操作小结:
1、登录Windows>db2cmd,使用 db2move 命令将源数据库(TEST)数据导出至指定的文件夹D:\db2move 下:

D:\db2move>db2move TEST export -u db2inst1 -p 123456 

ps:另可以将导出操作限制在特定的表(-tn)、表空间(-ts)、表创建者(-tc)、表模式 (-sn)的范围内。
-- db2move TEST export -sn test -u db2inst1 -p 123456(密码)
-- 将test模式下的所有数据导出。

执行成功后会显示 Disconnecting from database ... successful!

2、使用 db2look 命令将数据库结构(DDL文件) 导出至指定的文件夹D:\db2look下:

D:\db2look> db2look -d TEST -e -a -o db2look_TEST.sql

ps:参数说明:
-d 为指定数据库,必须参数
-e 抽取数据库对象的DDL,必须参数
-a 所有用户和模式,(-u test01 可以指定用户, -a 和 -u 都没有时默认当前登录用户)
-o 指定输出文件名称

3、将db2move和db2look文件上传至Linux系统下:
4、Linux下db2用户登录,同步数据结构,载入数据:

★更新表结构:

su - db2inst1:
password:123456  
db2inst1@localhost:~/db2back/db2look> db2 -tvf db2look_TEST.sql

★装载数据:

db2inst1@localhost:~/db2back/db2move> db2move TEST load 

操作顺利的话,数据已迁移至linux>db2。要注意几个问题:
★关于表模式

关于表模式,Windows下面默认用户db2admin ,默认表模式也是db2admin ,而linux下面的默认用户是db2inst1 表模式也是db2inst1,
所以需要做以下处理:
D:\DBBack\CNAS\db2look\TEST\db2look_TEST.sql里面的db2admin字符全部替换成db2inst1
D:\DBBack\CNAS\db2move\TEST\db2move.lst 也做同样的操作

★CHECK表状态,修改暂挂状态的表

在db2move过程中会有些表因为检查约束可能会处于暂挂状态,需要执行SET INTEGRITY命令来恢复它的暂挂状态。
可以从系统表中检索处于检查暂挂状态的表信息 Select tabname from syscat.tables where status='C' ---暂挂状态的表信息
对暂挂的表执行

set integrity for usertbl ALLOW NO ACCESS immediate checked       

★遗漏的表

导出的时候,可能会有个别表的数据丢失,这时候只能对相应的表执行db2move命令重新load了,如果还是不行就重建表再load
load单个表的命令

db2 load from tab11.ixf of ixf terminate into db2admin.tablename  --tab11.ixf对应的是tablename表

你可能感兴趣的:(DB2数据库的迁移)