使用recover dropped table功能即可
通过db2 list history dropped table all for dbname找到误删表的Backup ID以及该表的DDL语句
恢复误删表所在表空间 db2 restore db dbname tablespace(tbspname) taken at xxxx
在前滚中指定误删表 backup id,输出表数据
db2 rollforward db dbname to end of logs tablespace(误删表所在表空间名字) recover dropped table backup id to /home/db2inst
在/home/db2inst目录下的node0000目录下有一个data文件,是误删表的数据
通过DDL重建表,并使用LOAD将DATA文件导入表中即可.
没有做过备份的话,如果你拷贝的文件夹完整的话(既有元数据,又有数据库数据),可以uncatalog db dbname,然后将拷贝的文件夹拷贝回来,并catalog db dbname就可以了.
1. 首先数据库要可以前滚恢复(数据库配置参数logretain或userexit打开)。db2 connect to
dbname
db2 update db cfg using logretain on
db2 backup db dbname
(当打开归档日志后,该数据库会处于rollforward pending状态,所以要做一次全备份)
2. 对要实施Drop Table Recovery的表空间(限regular tablespace),执行:
db2 "alter
tablespace 表空间名称 dropped table recovery on "
3. 用 list history dropped table all for 数据库名 得到删除表的tableid(例如
0000000000006d0000020003)和表结构的生成语句(DDL),记录tableid和该语句以便恢复。之后,用drop命令删除的表中的数据可以在前滚恢复时导出。
db2
list history dropped table all for dbname
4. 恢复数据库后,如果想恢复已删除的表,在前滚时加recover dropped table tableid to
目标目录。在该目录下被删除的表中的数据导出。利用上面提到表结构生成语句生成被删除了的表,然后用import命令将数据导入表中。
db2
restore db dbname tablespace(tablespacename) without rolling forward without
prompting
db2 "rollforward db dbname to end of logs and stop
tablespace(tablespacename) recover dropped table table id to path "
cd
path
利用 db2 list history dropped table all for dbname
查出的表结构生成语句生成被删除了的表
db2 import from data of del insert into tablename
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)