db2从windows迁移到linux

关于数据库迁移,如果操作系统相同,例如从 Windows 系统迁移到 Windows 系统,或者从 AIX 系统迁移到 AIX 系统都比较好处理,一般使用 BACKUP 和 RESTORE 命令就可以进行。当然,有些情况下需要注意表空间重定向的问题。

那么,如果数据库迁移涉及到的操作系统不相同该怎么办呢?BACKUP 和 RESTORE 这个方法就行不通了。DB2 UDB 提供了两个非常实用的工具,一个是数据迁移工具 db2move,另一个是数据字典获取工具 db2look。

以下是我在项目中将db2数据库由windows xp测试环境迁移到linux下的具体步骤


[b]1 登录windows,使用 db2move 命令将源数据库(CCNS)数据导出至指定的文件夹[/b]D:\dbback\db2move\CNAS 下
[quote]C:\Documents and Settings\Administrator>cd /d D:\dbback\db2move\CCNS

D:\dbback\db2move\CCNS>db2move CCNS export -sn db2inst1 -u db2inst1 -p *****[/quote]

运行导出,成功后会显示 Disconnecting from database ... successful!

[b] 2 使用 db2look 命令将数据库 DDL 导出至指定的文件夹D:\dbback\db2look\CCNS下[/b]
[quote]C:\Documents and Settings\Administrator>cd /d D:\dbback\db2look\CCNS

D:\dbback\db2move\CCNS>db2look -d CCNS -e -a -o db2look_CCNS.sql[/quote]

[b]3 用ssh工具登录到linux系统中(当然其它工具也行),创建新数据库和数据结构[/b]
登录时用户名不要用root而是用db2安装时默认的用户,例如db2inst1/db2admin,登陆进去以后,用ssh自带的文件上传工具,把刚才导出的 D:\dbback\db2move 和 D:\dbback\db2look文件夹上传到linux系统中 如 /db2home/db2inst1/db2back/db2look/CCNS

创建新数据库,并执行数据库DDL语句,创建数据结构
[quote]db2inst1@ccns-archive-db:~> cd db2back/db2move/CCNS
db2inst1@ccns-archive-db:~/db2back/db2move/CCNS> db2 CREATE db CCNS
db2inst1@ccns-archive-db:~/db2back/db2move/CCNS> db2 -tvf db2look_CCNS.sql[/quote]

[b] 4 linux系统中 使用 load 命令装载数据[/b]
[quote]db2inst1@ccns-archive-db:~> cd /db2home/db2inst1/db2back/db2move/CCNS
db2inst1@ccns-archive-db:~/db2back/db2move/CCNS> db2move CCNS load[/quote]

[b]操作顺利的话,数据会被转移到linux下面。要注意两个问题[/b]

1) 关于表模式,windows下面的表用户名db2admin ,里面的表模式也是 db2admin 而linux下面的默认用户的是db2inst1 表模式也是db2inst1,所以需要做以下处理
D:\DBBack\CNAS\db2look\CCNS\db2look_ccns.sql里面的db2admin字符全部替换成db2inst1
D:\DBBack\CNAS\db2move\CCNS\db2move.lst 也做同样的操作
这样到入到linux系统后,就与linux默认的用户对应上了

2)在db2move过程中会有些表因为检查约束可能会处于暂挂状态,需要执行SET INTEGRITY命令来恢复它的暂挂状态。

[quote]可以从系统表中检索处于检查暂挂状态的表信息
Select tabname from syscat.tables where status='C'

对暂挂的表执行
set integrity for usertbl ALLOW NO ACCESS immediate checked[/quote]


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

load单个表的命令
[quote]db2 load from tab11.ixf of ixf terminate into db2admin.xxxxxxxxx
tab11.ixf对应的是xxxxxxxxx表 [/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值