今天同事不小心把生产上的一张表直接drop掉了,没有做备份,哥们慌的一匹,来找我这个小白来帮忙解决,于是心血来潮简单总结一下。
其实在oralce中,用drop删掉一张表,其实不会真正的删除,只是把表放到了回收站中,可以通过flashback命令来恢复drop掉的表。
例如:
1.创建一张表,删除;再创建一张同名表,字段不同,再删除
在 select original_name,dropscn from recyclebin时候,两个表的dropscn是不同的,在利用闪回恢复时 flashback table test to before drop;只能恢复dropscn大的那张表。
2.drop时使用了purge选项,这时drop掉的表不会放入回收站,无法闪回数据
3.基于上面两种情况,会出现下面这种情况
create table 先创建表,插入100数据;
drop table purge 再drop掉表;
create table 同名表;不插入数据
drop table 再删除该表
在这种情况下flashback闪回的表会是第二次建的表,即便第一个表的dropscn大,但是第一个表使用了purge选项,没有放入回收站
select original_name,dropscn from recyclebin;--查看哪些表被删除后放在回收站
flashback table test to before drop;--闪回恢复表和表内数据
注:flashback无法恢复索引
原文地址:https://www.cnblogs.com/WineMan/p/12056377.html
时间: 2024-09-30 06:24:16