听说有工具能会恢复oracle中被delete删除的记录,能介绍下吗?
flashback query闪回查询尝试使用Oracle 10g 以后的flashback Query特性 闪回查询可以查询若干时间之前的数据logmnr 日志挖掘使用logminer 日志挖掘 把delete的redo挖出来看有没有 对应的undo回滚SQL可用使用ORACLE PRM-DUL 工具Oracle PRM-DUL 工具可以恢复 数据库中表上 被删除的记录,大致流程如下:对于没有有效物理或逻辑备份的场景,当Oracle中发生delete误操作时 一般会优先考虑使用flashback闪回或logminer日志挖掘等技术来恢复Oracle表中的数据行记录,但很多时候flashback或logminer都无法力挽狂澜。 对于delete操作而言,其对于oracle底层数据块block中的row piece记录一般仅仅是修改其row flag标记为已删除标记,容许后续INSERT的记录覆盖这些被标记为delete的数据,也容许破坏这些delete掉的数据的结构。 换句话说如果delete后没有对表做什么操作的话,直接读取block中的这些被标记为deleted的记录还是有可能读取到完整数据的。总而言之,是否能恢复这部分delete掉的数据,完全取决于磁盘上oracle block中这部分删除的数据行是否有被最终清理掉。在被清理掉之前ORACLE PRM-DUL工具都可以尝试把这部分数据恢复出来, 具体步骤与普通的数据字典模式差别很小。启动PRM-DUL 点击恢复向导 字典模式 加入所有oracle数据文件,不需要加入临时文件TEMPFILE、UNDO数据文件、控制文件、日志文件 点击load 按钮,PRM会自动加载数据字典 即bootstrap动作 至此 PRM左侧将出现 树形的对象树,选择你需要恢复的用户下的对应数据表, 右击对象后选择 unload deleted data PRM-DUL 完成对已删除数据的恢复操作后会将 数据写出到 上图中 File path的位置, 示例的数据恢复情况如下:
在oracle中如何找回被删除的数据?
1、首先新建一张测试表TEST,里面输入记录。由于删除/更新/插入恢复步骤相同,这里仅演示删除数据的情况。2、删除其中1条记录,查看表中记录情况,由下图可见,记录2被删除了。3、恢复之前先确定要恢复到的时间点,下图可以看出2018-03-07 15:33:00数据是正确的。SELECT *FROM TEST AS OF TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');4、下面进行表数据恢复。FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');可以看到报错了,原因是没有开启行移动。5、开启该表的行移动。ALTER TABLE TEST ENABLE ROW MOVEMENT;6、再次执行数据恢复。FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');然后查看数据情况,可以看到已经恢复了。