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