亲测通过命令:
将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:UsersAdministrator>cd d:
D:
C:UsersAdministrator>d:
D:>cd D:database+helptoolDBVisual
D:database+helptoolDBVisual>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:db2DB2DATABNDDB2COMMON.BND ... successfu
l!
Binding package automatically ... E:db2DB2DATABNDDB2MOVE.BND ... successful!
Disconnecting from database ... successful!
End time: Fri Dec 02 09:28:48 2016
D:database+helptoolDBVisual>db2 connect to maxdb75 user maximo using maximo
数据库连接信息
数据库服务器 = DB2/NT 9.7.4
SQL 授权标识 = MAXIMO
本地数据库别名 = MAXDB75
D:database+helptoolDBVisual>db2look -d maxdb75 -e -a -o db2look_maxdb75_ddl.sq
l
-- 为所有创建程序生成统计信息
-- 正在创建表的 DDL
-- 输出被发送到文件: db2look_maxdb75_ddl.sql
-- 正在自动绑定程序包 ...
-- 绑定成功
-- 正在自动绑定程序包 ...
-- 绑定成功
D:database+helptoolDBVisual>db2look -d maxdb75 -e -a -o db2look_maxdb75_ddl.sq
l > maxdb75.log
-- 为所有创建程序生成统计信息
-- 正在创建表的 DDL
-- 输出被发送到文件: db2look_maxdb75_ddl.sql
D:database+helptoolDBVisual>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+helptoolDBVisual>db2look -d maxdb75 -u maximo -l -a -e -x -o maxdb7
5.sql > maxdb75.log
-- 为所有创建程序生成统计信息
-- 创建程序标识被忽略
-- 正在创建表的 DDL
-- 输出被发送到文件: maxdb75.sql