DB2--之重定向恢复
backup文件包括有关表空间和容器的信息。 如果过去存在的容器在进行备份时不再存在时,会发生什么情况? 如果 RESTORE 实用程序找不到该容器,那么您将得到一个错误。
如果您不想在这个位置恢复该备份,而想在别的位置进行恢复,但在那个地方又使用了其它配置,该怎么办?同样,在该情况下恢复备份将会产生问题。
重定向恢复解决了这些问题。重定向恢复过程:
获取记录在输入备份中的、有关容器和表空间的信息。通过将 "REDIRECT" 关键字包含在 RESTORE 命令中就能完成这一任务。例如:
RESTORE DATABASE DB2CERT FROM \db2\DBBACKUP\ INTO NEWDB REDIRECT WITHOUT ROLLING FORWARD(有多个备份文件时要TAKEN AT)
下面是该命令的输出:
SQL1277N Restore has detected that one or more table space containers are
inaccessible, or has set their state to 'storage must be defined'.
DB20000I The RESTORE DATABASE command completed successfully.
数据库 newdb 各个表空间信息:
LIST TABLESPACES SHOW DETAIL
为每个表空间设置新容器。
SET TABLESPACE CONTAINERS FOR 0 USING (FILE "\db2\newdb\cat0.dat" 5000)
SET TABLESPACE CONTAINERS FOR 1 USING (FILE "\db2\newdb\cat1.dat" 5000)
...
SET TABLESPACE CONTAINERS FOR n USING (PATH "\db2\newdb2")
开始将数据本身恢复到新容器中,如下所示:
RESTORE DATABASE DB2CERT CONTINUE
现在,重定向恢复完成。^_^
我的总结:
注意:
1.对于重定向恢复,不能更改表空间的类型,也就是说如果表空间是 SMS,那么就不能将它更改为 DMS(我在SET TABLESPACES时刚开始就犯了这个低级错误,狂郁闷之后,恍然大悟)
2.这里DMS容器用的是FILE,若用的是RAW要注意,当已经在RAW设备上创建容器后,若没有通过正常的步骤删除表空间所在的数据库,也没有直接删除容器或者容器所在的表空间,则再次利用这些RAW设备时,DB2会报:The container is already in use
此时应该使用db2untag命令释放container标志
如:db2untag -f /dev/rdb2cert_userts1
3.这种方法也可以用于为 SMS 表空间添加容器。因为在建完SMS表空间后就无法ALTER容器,唯一可以alter的是更改预取(prefetch)大小.所以重定向恢复为这一限制提供了一种变通方法
4:如果想通过这种方法把DB2CERT库恢复到NEWDB(克隆)时,不要加WITHOUT ROLLING FORWARD,恢复之后,NEWDB:LIST TABLESPACES SHOW DETAIL
看看PIT是否和DB2CERT库的一样,如果不同表明两个库的数据不一致,这时需要,ROLLFORWARD ...OVERFLOW LOG PATH 之后,再进行LIST
TABLESPACES SHOW DETAIL 检查PIT是否一致.
5.自己动手做实验才是硬道理,光看书,当时是看明白了,可做实验时就会问题多多,当然,收获多多
---------------over
阅读(4570) | 评论(0) | 转发(0) |