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')
然后查看数据情况,可以看到已经恢复了。
oracle如何恢复误删的表记录数据,解决办法:
从flash back里查询被删除的表select * from recyclebin
执行表的恢复flashback table tbName to before drop这里的tbName代表你要恢复的表的名称。
先从flashback_transaction_query视图里查询,视图提供了供查询用的表名称、事务提交时间、UNDO_SQL等字段。
一般先根据时间进行查询,查询语句模式为select * from tb as of timestamp to_timestamp(time,'yyyy-mm-dd hh24:mi:ss')tb指表名称,time指某个时间点。
这个命令的作用是,允许Oracle 修改分配给行的rowid。
在Oracle 中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。
闪回表处理会对EMP 完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。
要支持闪回就必须允许Oracle 执行这个 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)