1. 程式人生 > >通過Oracle的回收站恢復被刪除的表淺談

通過Oracle的回收站恢復被刪除的表淺談

在實際的工作中我們可能會因為一些誤操作刪除一些表。這個時候可以通過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;