通過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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章