通过Oracle的回收站恢复被删除的表浅谈

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011192409/article/details/83650688

在实际的工作中我们可能会因为一些误操作删除一些表。这个时候可以通过Oracle的回收站来恢复被删除的表、

一、创建测试表A:

create table A
(
  id      VARCHAR2(20),
  name    VARCHAR2(20),
  address VARCHAR2(20)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

二、在A插入一些测试数据

insert into A (ID, NAME, ADDRESS)
values ('1', '1', '1');

insert into A (ID, NAME, ADDRESS)
values ('2', '2', '2');

commit;

三、删除测试A表

drop table A;

四、查询回收站

select * from user_recyclebin;

通过上述查询语句会得到如下图所示结果:

五、恢复误删除的表

flashback table A to before drop;

六、通过上一步的恢复操作。我们可以看到表A已经被恢复过来了

七、总结:

oracle提供以上机制保证了安全操作,但同时也代来了另外一个问题,就是空间占用,由于以上机制的运行,使用drop一个表或者delete数据后,空间不会自动回收,对于一些确定不使用的表,删除时要同时回收空间,可以有以下2种方式:

1、采用truncate方式进行截断。(但不能进行数据回恢复了)

2、在drop时加上purge选项:drop table 表名 purge

该选项还有以下用途:

也可以通过删除recyclebin区域来永久性删除表 ,原始删除表drop table emp cascade constraints
purge table emp;
删除当前用户的回收站:
purge recyclebin;
删除全体用户在回收站的数据:
purge dba_recyclebin;

猜你喜欢

转载自blog.csdn.net/u011192409/article/details/83650688