在oracle 10g之前的版本中當用戶錯誤的刪除了一個重要的表時,DBA都會感到非常緊張,因為此時如果沒有可用的邏輯備份就只能進行不完全恢復了。而這種恢復既復雜又耗時,而且也沒有人敢保證恢復能百分之百成功。Oracle 10g的閃回技術基本上解決了這一難題。但是呢,Oracle并不保證所有刪除的表都能閃回成功。因為當用戶在某個表空間上創建一個新表(或需要磁盤空間)時,Oracle首先使用空閑的磁盤空間,如果沒有足夠的磁盤空間,oracle將使用回收站的磁盤空間。因此在創建表空間時最好留出足夠的磁盤空間以方便日后進行恢復工作。
要使Oracle能夠使用這一閃回技術,DBA還需要使用Oracle的alter system 命令將系統參數recyclebin設置為ON。
(1)、conn system/system;
(2)、檢查系統參數recyclebin設置情況:show parameter bin
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
Oracle10g默認安裝這個參數是設置為on的,如果檢查是為off,就是用如下命令設置:
(3)、alter system set recyclebin=on;然后在使用方法(2)命令檢查是否設置成功。
(4)、使用scott用戶進數據庫刪除該用戶下的一個表test:drop table test;刪除后,我們提交一個事務。
(5)、使用命令查詢回收站中的數據:select original_name,object_name,type from user_recyclebin;
ORIGINAL_NAME OBJECT_NAME TYPE
-------------------------------- ------------------------------ ------
---------
SYS_C0019221 BIN$h5+dotNQR5OJ01KFviNNvQ==$0 INDEX
TBCJ BIN$Hvru3rWpSq6HgQyXYKDEOA==$0 TABLE
TBUSER BIN$p2uX3b99R/61blECOndFgg==$0 TABLE
SYS_C0019219 BIN$chdZ2LpsTXyODiblN7y6Eg==$0 INDEX
SYS_C0019225 BIN$HiNeojLQR/So33DSYtiBoA==$0 INDEX
TBCJ BIN$rK3ITpw1TKeiHBYmVj+PbQ==$0 TABLE
SYS_C0019223 BIN$8fmX0cviTq23GRxDsdfL3g==$0 INDEX
TBUSER BIN$XaHHs5amRZq4O21XDI9p8w==$0 TABLE
AGENTS BIN$sw7eZiufSf+JQhOVRFg1yA==$0 TABLE
TEST BIN$ASaoxGlHT5mTGp8jr74bmA==$0 TABLE
(6)、使用閃回命令從回收站恢復剛才刪除的test表:flashback table "BIN$ASaoxGlHT5mTGp8jr74bmA==$0" to before drop;剛才誤刪的表恢復成功。