對於oracle10G以上的數據庫版本,提供了對數據的回收站機制,通過相關的配置,我們在drop非系統表的時候,
可以不直接刪除表,而是把表放回回收站,我們可以通過一些列的方法進行還原操作。具體步驟如下
1、使用具有一定權限的用戶查找是否開啓了回收站功能
show parameter recyclebin;
如果是off狀態,
alter system set recyclebin=off;
alter system set recyclebin=on;
alter session set recyclebin=off;
alter session set recyblebin=on;
2、在回收站查找我們需要恢復的表
show recyclebin/select * from recyclebin(推薦使用後面這種
,前面的show recyclebin 有的版本沒有)
如果是管理員請使用 select * from dba_recyclebin
3、恢復表ct_bs_project;
flashback table ct_bs_project to before drop;
如果使用system或者sys進行恢復需要制定表的所屬用戶
flashback table scott.emp to before drop;
4、完成恢復,進行驗證
select * from ct_bs_project;
補充:在開啓recyclebin狀態是open的情況下,drop表的時候並
不會釋放表空間,所以我們需要定時的手動清理回收站,或者是
表空間不夠的情況下會自動進行清理。
釋放回收站裏面的空間
purge recyclebin 清空回收站
完全刪除表(釋放表空間)
drop table ct_bs_project purge;
刪除名爲 TEST 的特定表之後需要從回收站中清除它
purge table test;
PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";
兩個表名稱都可以
清除表空間 USERS 的回收站中的所有對象
PURGE TABLESPACE USERS;