1:使用drop进行表删除
oracle 回收站recyclebin是10G才有的新特性。 当我们drop table cube_scope [purge] 时,如果不指定purge时,系统只是将这个表重命名为BIN$开头的名称, 并在数据字典中修改了相关的数据,表所占用的物理表空间,实际并没有真正的收回,此时所占用的表空间还是原来的表空间,当表空间不够用时,oracle会根据DROPSCN自动进行清理,10G默认是打开回收站功能的
查看是否开启回收站功能
show parameter recyclebin
查询recyclebin中的数据
select * from recyclebin (表名和之前的表名都为大写)
恢复数据
flashback table cube_scope to before drop
恢复数据库表,此时有表,但是表的索引,约束都已经丢失,需要重新创建
flashback table cube_scope to before drop rename to cube_scope_old
将恢复的数据表重新命名
2: delete对表进行的删除
首先我们创建一个表: insert into bak_tc_s select * from test_name t where rownum < 10
对其进行数据删除: delete from bak_tc_s
查看当前SCN 和 bak_tc_s 和表对应的数据
select current_scn from v$database; ----518653017489
select count(*) from bak_tc_s as of scn 518653017489 ---0
尝试查询bak_ts 有9条数据的系统时间scn
select count(*) from bak_tc_s as of scn 518652882204 ---9条
数据恢复
insert intobak_tc_s select * from bak_tc_s as of scn 518652882204
再次查询表bak_tc_s,查看已经恢复
SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。
SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
注释:Oracle 仅根据 SCN 执行恢复。
它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,
这两个名词经常被交替使用。
究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
Oracle的闪回特性之恢复truncate删除表的数据