2014-06-25 Created By BaoXinjian
一、摘要
在PLSQL開發時,有時候會遇到對表的誤刪除,其實遇到這種情況不需要緊張,如果問題較大,請DBA幫忙,如果只是小問題,只需自己處理,利用flashback閃回操作即可,可將表進行恢復
在刪除表時,系統一般都是表放入回收站中,並沒有完全進行刪除,因此,只需從回收站中進行恢復就可以了,原理和Window中的回收站一樣,但是一旦將回收站中的資料再進行刪除,這個就很難恢復了,只能向DBA求救
1. 回收站的概念
回收站,是一個虛擬的容器,用於存放所有被刪除的對象。
實質上說,對於一個對象的刪除,數據庫僅僅是簡單的重命名操作。
數據庫參數recyclebin設置為on.(即默認設置)。參數recyclebin為on,則表示把Drop的對象放入回收站。為off,則表示直接刪除對象而不放入回收站。
2. 查看recyclebin值命令
SQL> show parameter bin;
NAME TYPE VALUE
-----------------------------------------------
recyclebin string on
3. 在系統或會話級別中修改參數recyclebin值的命令為
SQL>alter system set recyclebin = on|off;
SQL>alter session set recyclebin = on|off;
4. 對回收站的相關操作
查看回收站的相關信息視圖有:recyclebin/user_recyclebin/dba_recyclebin.
手動清除回收站的信息為:purge recyclebin(或purge table original_name);
刪除一張表而不想放入回收站的命令為:drop table table_name purge;
二、詳細解析
案例: 對誤刪除的表bxj_tst_recyclebin進行恢復,並將表中的Index也一並恢復
Step1. 創建測試表、測試索引和測試數據
1 /*創建測試表*/
2 create table bxj_tst_recyclebin( 3 creation_date date, 4 comments varchar2(240) 5 );
6 /*創建測試索引*/
7 create index ind_creation_date on bxj_tst_recyclebin(creation_date);
8 /*創建測試數據*/
9 insert into bxj_tst_recyclebin values (sysdate, 'BXJ TEST Recyclebin 1'); 10 insert into bxj_tst_recyclebin values (sysdate, 'BXJ TEST Recyclebin 2'); 11 insert into bxj_tst_recyclebin values (sysdate, 'BXJ TEST Recyclebin 3'); 12 insert into bxj_tst_recyclebin values (sysdate, 'BXJ TEST Recyclebin 4'); 13 insert into bxj_tst_recyclebin values (sysdate, 'BXJ TEST Recyclebin 5');
Step2. 在刪除表前,確認表中所有數據,總過5條
Step3. 刪除表
drop table bxj_tst_recyclebin
Step4. 對表進行恢復
Step4.1 查看表被存放到user_recyclebin中,object name變更為BIN$/KUwk5M0NTfgQDQKbgxFbw==$0
Step4.2 表中數據仍舊被保存在回收站的object中(BIN$/KUwk5M0NTfgQDQKbgxFbw==$0),其實刪除過程中,只是修改一個object name而已
Step4.3 通過flashback對表進行恢復
flashback table bxj_tst_recyclebin to before drop
Step4.4 恢復表后,確認數據是否一切正常,數據較少時通過select * 明細進行比對,數據較多時通過select count(*) 總量進行比對即可
Step5. 對表中的索引進行恢復
Step5.1 表恢復后,你可以查到該表對應的索引還在回收站中
Step5.2 通過alert Index名對索引進行恢復
alter index "BIN$/KUwk5MzNTfgQDQKbgxFbw==$0" rename to ind_creation_date
Step5.3 確認恢復的索引和表的關系是否正常
Thanks and Regards