Oracle 10g的闪回删除与回收站

2014-11-24 18:58:41 · 作者: · 浏览: 5

在 Oracle 数据库的早期版本中,如果错误地删除了表,则必须将数据库恢复到以前的时间以恢复删除的表。此过程通常非常耗时,并且会导致丢失其它事务处理的工作。 Oracle Database 10g 引入了闪回删除功能,您可以使用此功能还原 DROP TABLE 语句的结果,而不必使用时间点恢复。


注:初始化参数 RECYCLEBIN 用于控制闪回删除功能是打开 (ON) 还是关闭 (OFF)。如果将该参数设置为 OFF,则删除的表不会进入回收站。如果将该参数设置为 ON,则删除的表将进入回收站,并且可以进行恢复。默认情况下,将 RECYCLEBIN 设置为 ON。


1.正常情况下删除一个表


drop table test1


这是表会被放置在recyclebin(回收站)


注意:这里如果执行了“commit”提交操作。下列闪回操作就会失效!


2.使用如下代码进行闪回操作


flashback table test1 to before drop


3.使用函数 timestamp 将表闪回但是到一个确切的时间点是的状态


如:


允许行滚动


alter table test1 enable row movement;


执行闪回操作


flashback table test1 to timestamp to_timestamp(‘2012-05-22 09:19:51’,’YYYY-MM-DD HH24:MI:SS’);


4.当回收站中具有多个原始名称时。


(1)一种是使用系统为所删除的表所起的名称还原特定版本


(2)使用原始名称时,还原的表遵循后进先出(lifo)的规则


5.对回收站中的表进行闪回并且重命名。


flashback table test1 to before drop rename to testnews ;


6.不使用回收站


drop table test1 purge;


drop tablespace users including contents;


drop user scott cascade;


7.清空回收站的操作


purge recyclebin;


8.显示回收站的内容


show recyclebin