环境:old :
server: HP380
OS: Windows
DB2版本:企业版V9.1
DB2安装:D盘
DB、TableSpace、Log:D盘
new :server: HP580
OS: Windows
DB2版本:企业版V9.1
DB2安装:C盘(只有C、E两个盘)
DB、TableSpace、Log:E盘 (E盘空间比较大)
在旧服务器上backup数据库后,拿到新服务器上restore由于路径变化,这种情况很显然直接restore是不对的,故需要重定向恢复。如果你直接在新机上restore,会报如下错误:SQL3012C 发生系统错误(原因码 = "")。无法处理后续的 SQL 语句。
解释:
发生系统错误。
用户响应:
记录消息中的消息号 (SQLCODE) 和原因码。
如果跟踪是活动的,则在操作系统命令提示符处
调用“独立跟踪设施”。然后与技术服务代表联系
并提供以下信息:
o 问题描述
o SQLCODE 和嵌入式原因码
o SQLCA 内容(如果有可能)
o 跟踪文件(如果有可能)。
联合系统用户:找出使请求失败的数据源中的问
题(参阅 问题确定指南 以确定哪个数据源导致 SQL
语句处理失败)并对该数据源执行必需的诊断步骤
。数据源的问题确定过程各有不同,因此参阅适用
的数据源手册。
sqlcode : -902
sqlstate : 58005
下面是重定向恢复:(备份的文件放在新机E:databackup2008-12-26 下)1、先在新机 db2cmd 执行以下命令:db2 restore db Angeli FROM "E:databackup2008-12-26" TAKEN AT 20081226092557 redirect generate script restore.clp
生成restore.clp脚本如下:
-- *****************************************************************************
-- ** 自动创建了重定向复原脚本
-- *****************************************************************************
UPDATE COMMAND OPTIONS USING S ON Z ON Angeli_NODE0000.out V ON;
SET CLIENT ATTACH_DBPARTITIONNUM 0;
SET CLIENT CONNECT_DBPARTITIONNUM 0;
-- *****************************************************************************
-- ** 自动创建了重定向复原脚本
-- *****************************************************************************
RESTORE DATABASE Angeli
-- USER <用户名>
-- USING '<密码>'
FROM 'E:databackup2008-12-26'TAKEN AT 20081226092557
-- ON 'D:DB2Angeli'
-- DBPATH ON '<目标目录>'
INTO Angeli
-- NEWLOGPATH 'E:DB2AngeliNODE0000SQL00002SQLOGDIR'
-- WITH <缓冲区数目> BUFFERS
-- BUFFER <缓冲区大小>
-- REPLACE HISTORY FILE
-- REPLACE EXISTING
REDIRECT
-- PARALLELISM
WITHOUT ROLLING FORWARD
-- WITHOUT PROMPTING;
-- *****************************************************************************
-- ** 表空间定义(略)
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 7
-- IGNORE ROLLFORWARD CONTAINER OPERATIONSUSING ( PATH 'DB2INFOSPACE');
-- *****************************************************************************
-- *****************************************************************************
-- ** 启动已重定向的复原
--*****************************************************************************
RESTORE DATABASE Angeli CONTINUE;
-- *****************************************************************************
-- ** 文件末尾
-- *****************************************************************************
2、修改表空间路径,修改后脚本如下:
-- *****************************************************************************
-- ** 自动创建了重定向复原脚本
-- *****************************************************************************
UPDATE COMMAND OPTIONS USING S ON Z ON Angeli_NODE0000.out V ON;
SET CLIENT ATTACH_DBPARTITIONNUM 0;
SET CLIENT CONNECT_DBPARTITIONNUM 0;
-- *****************************************************************************
-- ** 自动创建了重定向复原脚本
-- *****************************************************************************
RESTORE DATABASE Angeli
-- USER <用户名>
-- USING '<密码>'
FROM 'E:databackup2008-12-26'
TAKEN AT 20081226092557
ON 'E:DB2Angeli'
DBPATH ON 'E:'
INTO Angeli
NEWLOGPATH 'E:DB2AngeliNODE0000SQL00002SQLOGDIR'
WITH 2 BUFFERS
BUFFER 1024
REPLACE HISTORY FILE
REPLACE EXISTING
REDIRECT
PARALLELISM 1 WITHOUT ROLLING FORWARD
WITHOUT PROMPTING;
-- *****************************************************************************
-- ** 表空间定义(略)
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 7
-- IGNORE ROLLFORWARD CONTAINER OPERATIONSUSING ( PATH 'DB2INFOSPACE');
-- *****************************************************************************
-- *****************************************************************************
-- ** 启动已重定向的复原
-- *****************************************************************************
RESTORE DATABASE Angeli CONTINUE;
-- *****************************************************************************
-- ** 文件末尾
-- *****************************************************************************
3、在新机上建好相应的目录
restore from...taken at ....ON 'E:DB2Angeli'
DBPATH ON 'E:'
NEWLOGPATH 'E:DB2AngeliNODE0000SQL00002SQLOGDIR'
4、执行修改后的restore.clp脚本
db2 -tvf restore.clp
5、命令成功完成,RESTORE成功。收起