金融其它数据库

DB2重定向恢复

环境:old :server:  HP380    OS:  Windows DB2版本:企业版V9.1DB2安装:D盘DB、TableSpace、Log:D盘new :server:  HP580    OS:  Windows DB2版本:企业版V9.1DB2安装:C盘(只有C、E两个盘)DB、TableSpace、Log:E盘 (...显示全部
环境:
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成功。收起
参与15

查看其它 14 个回答px320067的回答

px320067px320067其它wfefwqf
呵呵
互联网服务 · 2013-07-22
浏览887

回答者

px320067
其它wfefwqf

px320067 最近回答过的问题

回答状态

  • 发布时间:2013-07-22
  • 关注会员:0 人
  • 回答浏览:887
  • X社区推广