通過Oracle的回收站恢復被刪除的表淺談
阿新 • • 發佈:2018-12-19
在實際的工作中我們可能會因為一些誤操作刪除一些表。這個時候可以通過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;