闪回删除

闪回删除:
所谓的drop实际上就是rename,我们通过查看回收站获取它们的新名称可以查询删除的对象。每个用户都有一

个回收站,可以在user_recyclebin数据字典视图中看到它,若要了解全局视图,可以查询dba_recyclebin
,当表空间的空间不够时,可以自动重用回收站对象占用的空间(此后不能恢复对象).或者可以手动强制Oracle
使用purge命令真正删除对象。
使用闪回删除的例子:
(1)创建一个表
SQL> create table student(id number);

表已创建。
(2)向表中插入几行数据
SQL> insert into student values(1);

已创建 1 行。

SQL> insert into student values(2);

已创建 1 行。
SQL> commit;

提交完成。
(3)将表删除之后再查询一下
SQL> drop table student;

表已删除。
SQL> select * from student;
select * from student
              *
第 1 行出现错误:
ORA-00942: 表或视图不存在
(4)执行闪回恢复
SQL> flashback table student to before drop;

闪回完成。
(5)再次查询一下
SQL> select * from student;

        ID
----------
         1
         2

闪回删除的语法如下:
drop table <table_name> purge;
flashback table <table_name> to before drop rename to <new_name>;
第一个命令purge关键词指示Oracle恢复drop的原始含义:删除到该表的所有引用并且永远无法恢复。第二条命令将闪回该表并重新命名。这样做的好处是:防止在删除和闪回期间创建了另一个与删除的表具有相同名称
的表。注:虽然可以在闪回模式下对表进行重命名,但不能更改模式:所有闪回操作出现在对象所属的模式内。和表一同闪回的索引,触发器和约束都保持它们的回收站名称。如果希望恢复它们原先的名称,则可以在
闪回操作后手动命名。
  再次,需要强调两点:1.flashback drop只能在执行drop命令后恢复,而不能恢复truncate命令。
第二,如果删除了一个用户,如下:
drop user scott cascade;则使用闪回操作无法恢复任何scott下的表。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值