Oracle Flashback家族有四個成員,分別是以下:
Flashback Database ——閃回數據庫
Flashback Drop ——閃回刪除Flashback Table ——閃回表
Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query) ——閃回查詢
今天主要講下Flashback Drop技術:
Flashback Drop(利用回收站功能恢復)
在Oracle10g以後,drop不會將表直接刪除掉,而是將表進行重命名,也就是說你使用了drop,oracle只是將表重命名,但是表仍然在原地保存,可以在oracle的回收站中查到相關的信息。
不過使用Flashback Drop技術需要打開回收站功能:
SQL>alter system set recyclebin=on;(on/off 打開關閉回收站)
例子:
SQL> drop Table test1;
SQL>show recyclebin;
SQL>flashback table test1 to before drop;
注意:Flashback Drop 有如下特點:
1.表的刪除被映射爲將表的重命名,然後將其置於回收站
2.表的索引,觸發器,授權閃回後將不受到影響.索引,觸發器名字可以根據需要進行更改回原來名稱
3.對於約束,如果是外鍵約束,表刪除之後將不可恢復,其餘的約束不受影響
4.如果要查詢回收站中的對象,建議將對象名使用雙引號括起來
5.閃回的實質並不能撤銷已提交的事務,而是構造倒退原有事務影響的另一個事務
6.對於已經刪除的表如果在所在的表空間新增對象由於空間不足的壓力而被重用將導致閃回失敗
7.對於表空間不足時,系統會自動清除回收站中最老的對象,以滿足當前需求,即採用FIFO原則
8.閃回表的常用方法
flashback table tbname to before drop ;
flashback table tbname to before droprename to newtbname;
第二條語句用於被刪除的表名已經被再次重用,故閃回之前必須將其改名爲新表名,schema不變化
9.如回收站中存在兩個相同的原表名,則閃回時總是閃回最近的版本,如果閃回特定的表,需要指定
該表在回收站中的名稱。如
flashback table"BIN$k1zC3yEiwZvgQAB/AQBRVw==$0" to before drop;
10.flashback drop 不能閃回truncate命令截斷的表,而是隻能恢復drop 之後的表
11.flashback drop 不能閃回drop user scott cascade刪除方案的操作,此只能用flashback database
12.在system表空間中存儲的表無法啓用flashback drop,且這些表會被立即刪除