db2数据库---将数据库从AIX系统迁到Windows系统

亲测通过命令:

 

将db2数据库从AIX系统迁移到Windows系统中(很多现场环境都是用小机,即AIX),不能直接使用备份文件,因为两个系统是不同的
首先在一台pc机上安装db2数据库,然后通过内网连接到服务器的数据库,具体连接过程如下:
http://jingyan.baidu.com/article/76a7e409d8f550fc3b6e15dc.html

连接成功后
首先进入db2cmd命令操作界面,然后通过cd命令跳转的你想让导出的文件存放的路径下,比如跳转至E盘data文件夹下:
cd E:\data

然后先用db2move命令导出数据库中的数据
比如:数据库名为maxdb75 用户和密码都是maximo,则导出命令如下:

db2move maxdb75 export -u maximo -p maximo > maxdb75data.log

注:最后的> maxdb75data.log是创建导出日志,并将导出过程记录在内,便于在导出过程中出错时查看出错信息,确定出错位置,当然,你不创建
导出日志也行,

接着在这个路径下连接数据

db2 connect to maxdb75 user maximo using maximo

看到连接成功就可以接着导出表结构了(别问我如果没连接成功怎么办)

db2look -d maxdb75 -u maximo -l -a -e -x -o maxdb75ddl.sql > maxdb75ddl.log

还有一种写法是这样的:

db2look -d ncdb(要备份的库名) -u db2admin -l -a -e -x -o ncdb.sql -i db2admin -w 123456 > ncdblook.log

注:-i 和 -w 分别是db2系统用户的用户名和密码,一般好像不需要用到这个写法


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
上面都是坑,自己挖的坑,怎么滴都得填平

上述操作只是在本机上测试,但现场是aix,所以上面的导出表结构会报password missing错误,应该用下面这个(网上看的Linux系统应该也可以
用下面这个)

db2look -d maxdb -e -z maximo -l -a -e -x -i db2inst1 -w dbmaster.2015 -o maxdbddl.sql > maxdbddl.log

除了导表结构的时候的这个问题,一般还会碰到一个问题,就是编码方式问题,查看AIX上的db2编码方式,查看方式:

记住不能再本地的db2数据库命令窗口查看那个是看不了的,目前这边是通过软件连接到AIX上查看的

db2set -all 结果中有DB2CODEPAGE这一项就是了

然后导出数据(move)之前要先设置本地的db2数据库编码方式与之相同

db2set db2codepage=1208(一般都是1208,具体看情况了)

如果不设置编码,那么可能会碰到警告,也算是错误,就像下面这个

*** Table "MAXIMO "."CRONTASKPARAM": ERROR 3107. Check message file tab137.msg!
*** SQL Warning! SQLCODE is 3107
*** SQL3107W 消息文件中至少有一条警告消息。

如果不解决,到时再Windows上恢复的时候也是会出问题(好像是找不着表还是找不着数据来着)

 

太费时间了,数据库里大概有860+的表,导了差不多一个小时才导了510+,以为是出问题了,终止了导出过程,到时导出数据估计要好几个小时,
写在这,略做提醒


数据库恢复

========================from yang**
1、OVERHEAD 以及 TRANSFERRATE -1.00000无法解析,直接指定10.5和0.14。
2、建表语句中:所有CODEUNITS16去掉,ORGANIZE BY ROW 是10.5的功能,也去掉
3、windows上恢复时,“数据库上的权限语句”那部分去掉
4、触发器:在所有REFERENCING前面加上空格 ,REFERENCINGNEW改为 REFERENCING NEW ;NEXTVALFOR改为NEXTVAL FOR ;ASN FOR 改为 AS N FOR
;AS NFOR EACH 改为AS N FOR EACH 。
4、执行顺序为:
1)space.sql
2) grantspace.sql
3) table.sql
4)granttable.sql
5)db2move导入数据(必须在触发器之前导入,否则会因为触发器而导致数据导入无效)
6)trigger.sql
7)process.sql
========================

首先创建一个数据库,然后导入表结构,然后导入数据

本次恢复数据库是按上述yang**提供的笔记来恢复的

步骤5导入数据的注释:
a)在db2cmd命令窗口通过cd跳转到数据备份文件所在的目录
b)然后运行数据导入命令:db2move dbname load--------------就是这么简单

 

 下面附上一些当时执行命令时显示的一些信息:

说明一下:下面这些信息是我备份自己本机上的数据库时的操作,当时提取现场的数据库库时,由于AIX系统的操作命令并不熟悉,所以当时是通过在本机上建立一个数据库,然后通过内网连接到AIX系统上的数据库,然后再Windows系统上通过db2cmd命令来备份,备份命令和下面记录的基本是一样的

 

C:\Users\Administrator>cd d:
D:\

C:\Users\Administrator>d:

D:\>cd D:\database+helptool\DBVisual

D:\database+helptool\DBVisual>db2move maxdb75 export -sn maxdb75 -u maximo -p ma
ximo

Application code page not determined, using ANSI codepage 1386

***** DB2MOVE *****

Action: EXPORT

Start time: Fri Dec 02 09:28:47 2016


All schema names matching: MAXDB75;

Connecting to database MAXDB75 ... successful! Server : DB2 Common Server V9.7.
4

Binding package automatically ... E:\db2\DB2DATA\BND\DB2COMMON.BND ... successfu
l!

Binding package automatically ... E:\db2\DB2DATA\BND\DB2MOVE.BND ... successful!

 

Disconnecting from database ... successful!

End time: Fri Dec 02 09:28:48 2016

D:\database+helptool\DBVisual>db2 connect to maxdb75 user maximo using maximo

数据库连接信息

数据库服务器 = DB2/NT 9.7.4
SQL 授权标识 = MAXIMO
本地数据库别名 = MAXDB75


D:\database+helptool\DBVisual>db2look -d maxdb75 -e -a -o db2look_maxdb75_ddl.sq
l
-- 为所有创建程序生成统计信息
-- 正在创建表的 DDL
-- 输出被发送到文件: db2look_maxdb75_ddl.sql
-- 正在自动绑定程序包 ...
-- 绑定成功
-- 正在自动绑定程序包 ...
-- 绑定成功

D:\database+helptool\DBVisual>db2look -d maxdb75 -e -a -o db2look_maxdb75_ddl.sq
l > maxdb75.log
-- 为所有创建程序生成统计信息
-- 正在创建表的 DDL
-- 输出被发送到文件: db2look_maxdb75_ddl.sql

D:\database+helptool\DBVisual>db2look -d maxdb75 -u maximo -l -a -e -x -o maxdb7
5.sql -i db2admin -w db2admin > maxdb75.log
-- 为所有创建程序生成统计信息
-- 创建程序标识被忽略
-- 正在创建表的 DDL
-- 输出被发送到文件: maxdb75.sql
--绑定期间出错

Error Message =
SQL0551N "DB2ADMIN" 不具有对对象 "NULLID.DB2L0H00" 执行操作 "EXECUTE"
的必需权限或特权。 SQLSTATE=42501


SQLCA
Size = 136
SQLCODE = -551
Tokens = DB2ADMIN ?EXECUTE ?NULLID.DB2L0H00
RDS fn = SQLRA138
RC = 0x801A006D = -2145779603
Reason = 0x0000 = 0
Reason2 = 0x0000 = 0
Line # = -20
Warning flags =


D:\database+helptool\DBVisual>db2look -d maxdb75 -u maximo -l -a -e -x -o maxdb7
5.sql > maxdb75.log
-- 为所有创建程序生成统计信息
-- 创建程序标识被忽略
-- 正在创建表的 DDL
-- 输出被发送到文件: maxdb75.sql

 

posted on 2017-01-20 15:14  binTke  阅读(721)  评论(0编辑  收藏  举报

导航