搜索
您的当前位置:首页正文

DB2数据库的迁移

来源:二三娱乐

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

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

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

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

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

二、操作系统不同,或者源数据库版本较高
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 

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

在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表
Top