您的位置:首页 > 数据库 > Oracle

Oracle Flashback技术之Flashback Drop

2015-10-11 22:55 393 查看
Oracle Flashback家族有四个成员,分别是以下:

Flashback Database ——闪回数据库

Flashback Drop ——闪回删除

Flashback Table ——闪回表

Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query) ——闪回查询

今天主要讲下Flashback Drop技术:

Flashback Drop(利用回收站功能恢复)

在Oracle10g以后,drop不会将表直接删除掉,而是将表进行重命名,也就是说你使用了drop,oracle只是将表重命名,但是表仍然在原地保存,可以在oracle的回收站中查到相关的信息。

不过使用Flashback Drop技术需要打开回收站功能:

SQL>alter system set recyclebin=on;(on/off
打开关闭回收站)

例子:

SQL> drop Table test1;

SQL>show recyclebin;

SQL>flashback table test1 to before drop;

注意:Flashback Drop 有如下特点:

1.表的删除被映射为将表的重命名,然后将其置于回收站

2.表的索引,触发器,授权闪回后将不受到影响.索引,触发器名字可以根据需要进行更改回原来名称

3.对于约束,如果是外键约束,表删除之后将不可恢复,其余的约束不受影响

4.如果要查询回收站中的对象,建议将对象名使用双引号括起来

5.闪回的实质并不能撤销已提交的事务,而是构造倒退原有事务影响的另一个事务

6.对于已经删除的表如果在所在的表空间新增对象由于空间不足的压力而被重用将导致闪回失败

7.对于表空间不足时,系统会自动清除回收站中最老的对象,以满足当前需求,即采用FIFO原则

8.闪回表的常用方法

flashback table tbname to before drop ;

flashback table tbname to before droprename to newtbname;

第二条语句用于被删除的表名已经被再次重用,故闪回之前必须将其改名为新表名,schema不变化

9.如回收站中存在两个相同的原表名,则闪回时总是闪回最近的版本,如果闪回特定的表,需要指定

该表在回收站中的名称。如

flashback table"BIN$k1zC3yEiwZvgQAB/AQBRVw==$0" to before drop;

10.flashback drop 不能闪回truncate命令截断的表,而是只能恢复drop 之后的表

11.flashback drop 不能闪回drop user scott cascade删除方案的操作,此只能用flashback database

12.在system表空间中存储的表无法启用flashback drop,且这些表会被立即删除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: