使用LogMiner抢救误删数据

接同事电话,上午十点多,新来的开发人员误删十几个表,并且已经做了插入操作,问能否恢复。
误操作是这样的:“先delete清空表里面的数据,然后insert一份其他的数据;大概十几个表”
给他们flashback恢复语句:
CREATE TABLE tmpMytable AS SELECT * FROM test AS OF TIMESTAMP to_timestamp('20190418 15:40:00', 'yyyymmdd hh24:mi:ss');
答复说使用这个办法,只恢复了3个表的数据,“UNISEQUENC、T_EOM_CITY、T_EOM_DISTRICT”,其他表在恢复时提示“01555快照过旧错误”。
问有无其他办法,于是想到了这个一直没有试过的LogMiner。
先确认了数据库不是归档模式,那么就需确认onlinelog是否还没有覆盖,幸运的是,当初配置的redolog文件够大,每个2G,有3组,还未覆盖,于是通过LogMiner恢复就有了可能。借此也熟悉一下具体的操作步骤,记录如下。

使用如上步骤,将最后的查询结果输出到spool临时文件,在后续处理后,执行这些得到的SQL语句重新插入到数据库,即完成了10:25-10:45期间的所有误删操作的数据恢复。

《使用LogMiner抢救误删数据》有1个想法

  1. 如果不启用supplemental log补充日志,主要会有一些操作日志无法挖掘,主要是update相关的操作。

发表评论

电子邮件地址不会被公开。 必填项已用*标注