需求说明:不同操作系统平台下,数据库之间的同步。
一、操作系统相同之脱机备份
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
据向下兼容原则,版本相同或者低版本的数据库可以还原在高版本上。
二、操作系统不同,或者源数据库版本较高
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表
网友评论