恢复单独表空间时候,提示备份中没有这个表空间,奇怪了!??

[复制链接]
查看11 | 回复9 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
请问,我对数据库做了全备份,然后删除一个表空间(我以前自己创建的),再restore单独这个表空间,他提示备份镜像中的表空间无法存取,意思就是备份里面没有这个表空间,而且我用gui方式,也看见并他只有catalog和userspace1两个表空间可供单独恢复,但是如果我做全库恢复,就会恢复出来我创建的那个表空间,单独就提示没有,怎么回事啊?
出错提示是sql2549n
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
db2diag.log
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
我又做了实验,就算我备份的时候单独备份一个表空间:
db2 backup db testdb tablespace dongna to f:\backup
备份完后我在testdb空间创建一个表dongna,然后:
db2 restore db testdb tablespace (dongna) from f:\backup taken at xxxxxxx without rolling forward
之后提示成功,我连接数据库,结果创建的dongna表还在,而且testdb表空间处于前滚暂挂状态 我已经彻底没辙了。
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
表创建的数据是在 catalog表空间的
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
楼上的高手,我不太明白
我create table dongna () in testdb
怎么是在catalog表空间创建了反倒?有什么秘密么这里?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
当你创建了一个表后,db2会在sysibm.systables添加相应表的信息,当你restore那个tablespace得时候,该tablespace里面的数据被恢复,但是catalog里面的信息不变,也就是说db2依然认为这个表存在。
对于这种在tablespace中增减table得操作,最好作full restore确保数据完整性
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
哦,谢谢,
1、那么为何我加了without rolling forward,恢复之后,还提示处于前滚暂挂状态呢?
2、既然单独恢复表空间不能达到预期目的,那么为何还提供这个功能呢?算不算是一个bug呢?我比较菜,谢谢指点。
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
1)因为你只恢复了其中一个tbspace,所以必须要rollforward to end of log,以确保数据完整性(要不然你其他tablespace都是今天的,这个tablespace得数据是上周的,数据不是就乱了么)
2)如果想要恢复表空间,该表空间必须存在,如果你删除了一个表空间,很多catalog中的信息都会被删除,怎么还能恢复?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
第一个问题,如果我就是要恢复到上周某时刻的状态呢,本周做的业务全错了,我要全部作废,我要恢复到上周,不可以?其他表空间业务不变,维持现状
第二个问题,我没有删除原来的表空间,只是新键了一个表而已,但是恢复之后,新建的表还存在,我就不明白怎么回事了
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
最初由 diablo2 发布
[B]db2diag.log [/B]

这个要看日志?周末我得和你聊聊了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行