闪回删除

     10g版本开始,DROP命令的实现有所变化,如果没有特别的要求,该命令不再进行任何删除操作,而是仅仅重命名对象,从而不会再次看到这些对象而已。

      我们可以使用闪回删除来恢复一张被DROP的表,命令如下
SQL> create table aaa as select * from all_users;

表已创建。

SQL> select count(*) from aaa;

  COUNT(*)
----------
        28

SQL> drop table aaa;

表已删除。

SQL> select count(*) from aaa;
select count(*) from aaa
                     *
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> flashback table aaa to before drop;

闪回完成。

SQL> select count(*) from aaa;

  COUNT(*)
----------
        28

需要注意,建立在system上的对象是无法真正入recyclebin的。所以一般来讲sysdba的用户所drop的table是无法用flashback table t to before drop命令恢复的。

system 的默认表空间是 system表空间,上一个用户的表空间是新建的。我们以system 连接数据库

SQL>conn system/system

已连接

SQL> create table aaa as select * from all_users;

表已创建。

SQL> select count(*) from aaa;

  COUNT(*)
----------
        28

SQL> drop table aaa;

表已删除。

SQL> select count(*) from aaa;
select count(*) from aaa
                     *
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> flashback table aaa to
flashback table aaa to befor
*
第 1 行出现错误:
ORA-38305: 对象不在回收站中

我们可以通过查询字典user_recyclebin来查询oracle的回收站。

通过show 命令我们可以查看

sql>show recyclebin   这命令总不返回结果,疑问,不知如何解决


那就查询数据字典user_recyclebin获得回收站信息
SQL> select object_name,original_name,type,droptime from user_recyclebin;
例如;恢复被删除的表emp.
SQL>flashback table emp to before drop;
如果不知道原表名,可以直接使用回收站中的名称进行闪回。
SQL>flashback table "Bin$DSbdfd4rdfdfdfegdfsf==$0" to before drop;
在回收的同时可以修改表名:
SQL>flashback table "Bin$DSbdfd4rdfdfdfegdfsf==$0" to before drop rename to emp1;
真正删除某一个表,而不进入回收站,可以在删除表时增加purge选项.如将emp表彻底删除.
SQL>drop table emp purge;
也可以通过删除recyclebin区域来永久性删除表 ,原始删除表drop table emp cascade constraints
SQL>purge table emp;
删除当前用户的回收站
SQL>purge recyclebin;
删除全体用户在回收站的数据.
SQL>purge dba_recyclebin


 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23754390/viewspace-667817/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23754390/viewspace-667817/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值