DB2误删除表的恢复

当在DB2的TS2表空间误删除tb2表后,通过表空间恢复+前滚无法恢复。本文详细介绍了如何利用dropped table recovery功能,通过新建表空间、备份、添加数据、删除表、前滚等一系列操作,成功恢复tb2表的同时,保持其他表和数据不受影响。
摘要由CSDN通过智能技术生成

情形:
实例test下的testdb数据库其中TS2表空间有2张表tb1和tb2,在一次全备份后,
误删除了tb2表,如何恢复tb2表,且能不影响和丢失tb1和其他表空间的数据呢?
第一:循环日志模式,直接恢复到全备份时间点,那么则丢失备份点后的全部数据;
第二:归档日志模式,数据库恢复+rollforward,恢复数据库到备份时间点,并且
           前滚到tb2删除时间前,那么则丢失tb2表删除时间点后的数据;
第三:归档日志模式下的,表空间恢复+rollforward,但表空间的恢复最小的时间点是系统目录
           对表空间或其中表最后一次更新操作时间,也就是表空间或其中表最后的一次DDL语句
           (create/alter/delete等)时间,所以上面情况表空间最多只能rollforward到tb2表删除后
            的时间点,所以表空间恢复+rollforward不能帮助恢复tb2表。
查看表空间的最小需要前滚时间点:
[test@demo NODE0000]$ db2 "select substr(tablespace_name,1,15) as ts_name,min_recovery_time from table (snapshot_tbs_cfg('TESTDB',-1)) as a"
TS_NAME         MIN_RECOVERY_TIME         
--------------- --------------------------
SYSCATSPACE     -                         
TEMPSPACE1      -                         
USERSPACE1      2019-01-06-15.58.23.000000
SYSTOOLSPACE    -                         TS2                     2019-01-06-16.05.36.000000
  5 record(s) selected.

有没有什么办法可以:恢复了tb2表,并且不影响TS2表空间中的其他表tb1和其他表空间的数据呢?
DB2提供了dropped table recovery来获取误删表的定义和删除之前的数据,如此便可重建该表。

1.新建一个表空间ts2
[test@demo SQL00001]$ db2 "create tablespace ts2 managed by database using (file '/home/test/file' 10M)"

2.在表空间ts2上创建两张表tb1和tb2
db2 "create table tb1(id int,name varchar(10)) in ts2 "

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值