生产服务器:P550 aix5.3
测试机:P650 aix5.3
DB2的版本号为:DB2 v9.1

目标:在生产数据库服务器上备份,然后将这个备份重定向恢复到测试数据库上。 
1 首先在生产数据库服务器上执行如下命令进行全盘在线备份(包括日志) 
 db2 backup db crdtdb online to /db/dbbak/ include logs(注:重定向要用到日志)

2 在生产数据库服务器上执行如下命令查看当前数据库表空间情况。

db2 list tablespaces
现在,开始重定向恢复数据库 
3 首先要为原数据库创建相应的表空间容器,进入cmd命令窗口,执行下面的命令 
 mkdir /crdtdb  
其实也就是为生产机上备份下来的数据多个表空间容器定义存放的路径。

4 在测试机上执行下列命令来建立一个空的数据库:crdtdb

db2 create db crdtdb

注意:重定向恢复操作必须在同一个会话中调用,否则,将返回 SQL0900N,恢复操作将会失败。

5)开始测试机上执行数据库恢复命令(将日志指定存放的路径为:/dbbak/mylog)

db2 restore db crdtdb from /dbbak taken at 20100606216139  into crdtdb logtarget  /dbbak/mylog redirect

出现如下提示: 
SQL2523W  警告!正在复原至与备份映像上的数据库不同,但具有匹配名称的现有数据库。 
目标数据库将被备份版本覆盖。将删除与目标数据库相关联的前滚恢复日志。 
要继续吗?(y/n) 
输入:y,回车

之后会出现如下提示:

SQL1277W  正在执行重定向复原操作。现在,可以查看表空间配置,并且不使用自动存储器 
的表空间可以重新配置它们的容器。 

然后继续下面的第六步。

其中路径/dbbak 和/dbbak/mylog都是生产机上的绝对路径。/dbbak里存放的是从生产机上拷贝过来的备份文件,而路径/dbbak/mylog下会生成当时备份时的日志文件,这些日志文件是在恢复执行前滚操作是必须需要的。

6)为要恢复的本地数据库表空间指定容器,执行下列命令 
db2 "set tablespace containers for 0 using (path '/crdtdb')"
db2 "set tablespace containers for 1 using (file '/crdtdb/crdttbs01.dbf' 2000)"
db2 set tablespace containers for 2 using (file '/crdtdb/crdtmb01.dbf' 2000)

db2 set tablespace containers for 4 using (file '/crdtdb/crdtdb01.dbf' 2000)

db2 set tablespace containers for 5 using (file '/crdtdb/crdtkb01.dbf' 2000)

db2 set tablespace containers for 6 using (file '/crdtdb/crdtanb01.dbf' 2000)

其中的数字:0,1,2,3,4,5,6是源数据库的表空间标识.

7然后继续执行恢复

db2 restore db crdtdb continue

8最后要执行前滚命令

rollforward db crdtdb to end of logs and stop overflow log path (/dbbak/mylog) 
9执行下列命令查看是否恢复成功 
db2 list db directory

db2 connect to   crdtdb