Oracle的Flashback Drop閃回刪除功能給出我們一種誤DROP刪除表的便捷恢復方式,實現這種功能的原理是Oracle的“回收站”(RecycleBin)功能。注意,如果被刪除的表原先是存放在SYSTEM系統表空間上,則不支援此功能。
1.Flashback Drop功能
恢復被錯誤drop掉的表。當一張表被刪除後,依然可以檢視被drop表的內容,是透過檢視回收站中的內容實現的。
2.實現原理
被刪除的表將被存在一個叫recyclebin回收站的地方,當drop掉表後,實際上就是將改表改了個名字。
3.與回收站有關的檢視
DBA_RECYCLEBIN
USER_RECYCLEBIN
RECYCLEBIN
4.顯示當前使用者曾經被drop掉的表簡簡訊息
SQL> show recyclebin
5.清除回收站內容的條件
1)表空間不足
2)使用者的空間配額不足
3)purge命令
4)使用flashback命令恢復表後,與之對應的回收站中的那條記錄內容被清除。
6.Flashback Drop語法
SQL> FLASHBACK TABLE ft_1 TO BEFORE DROP;
SQL> FLASHBACK TABLE "BIN$Z6gzDCWg7hfgQAB/AQAROQ==$0" TO BEFORE DROP;
上面兩種方法都可以實現找回被刪除表的功能。第一種方法是恢復到最後一次被刪除的狀態;第二種方法則可以對回收站中具體的一個物件進行閃回,用於一張表被多次刪除後的恢復場景。
7.Flashback Drop閃回刪除功能實踐
(1).建立測試表ft_1
sys@ora11g> conn secooler/secooler
Connected.
secooler@ora11g> create table ft_1 as select * from all_objects;
Table created.
secooler@ora11g> select table_name from user_tables where table_name = 'FT_1';
TABLE_NAME
------------------------------
FT_1
(2).模擬drop掉ft_1表
secooler@ora11g> drop table ft_1;
Table dropped.
(3).檢視回收站,這裡看到ft_1表已經在回收站中了
secooler@ora11g> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
FT_1 BIN$vXtL504BE5vgQMKQt8Bnug==$0 TABLE 2012-04-12:20:14:24
(4).演示一下查詢功能
secooler@ora11g> select count(*) from "BIN$vXtL504BE5vgQMKQt8Bnug==$0";
COUNT(*)
----------
71256
(5).閃回被drop掉的表
secooler@ora11g> flashback table ft_1 to before drop;
Flashback complete.
secooler@ora11g> select table_name from user_tables where table_name = 'FT_1';
TABLE_NAME
------------------------------
FT_1
這裡在能確認回收站中哪個是要恢復的表時,也可以使用下面的命令進行恢復。
secooler@ora11g> drop table ft_1;
Table dropped.
secooler@ora11g> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
FT_1 BIN$vXtL504IE5vgQMKQt8Bnug==$0 TABLE 2012-04-12:20:18:35
secooler@ora11g> flashback table "BIN$vXtL504IE5vgQMKQt8Bnug==$0" to before drop;
Flashback complete.
secooler@ora11g> select table_name from user_tables where table_name = 'FT_1';
TABLE_NAME
------------------------------
FT_1
OK,到這裡,被刪除的表便被順利的恢復回來。
8.清除回收站內容的方法
如果您確定、一定以及肯定不想恢復這些表的時候,可以使用以下方法對回收站進行清理。
1)清除當前使用者的回收站
SQL> purge recyclebin;
SQL> purge user_recyclebin;
2)清除指定表空間tbs_sec_d的回收站
SQL> purge tablespace tbs_secooler_d;
3)清除指定表空間tbs_sec_d,同時指定使用者sec的回收站
SQL> purge tablespace tbs_sec_d user sec;
4)清除回收站中所有的內容(sys使用者)
SQL> purge dba_recyclebin
9.不產生回收站資料的同時drop表方法
這種方法是徹底刪除表的方法,使用前要考慮清楚。
SQL> drop table ft_1 purge;
10.小結
在使用Flashback Drop閃回刪除功能之前要充分了解此項功能的實現原理,以及使用此項功能的條件和它的限制條件。閃回刪除功能為我們提供了表被誤DROP後的便捷恢復手段。
Flashback Drop閃回刪除功能實踐
相關文章
- 【Flashback】Flashback Drop閃回刪除功能實踐
- Flashback Drop閃回刪除功能實踐(基於回收站)
- 【Flashback】Flashback Database閃回資料庫功能實踐Database資料庫
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- 【Flashback】使用Flashback Drop技術閃回被DROP表的指定版本資料
- 閃回刪除、閃回查詢
- Oracle閃回刪除Oracle
- 開啟oracle的flashback閃回功能Oracle
- Flashback_oracle閃回功能的使用Oracle
- 【Flashback】啟用Flashback Database閃回資料庫功能Database資料庫
- 閃回刪除技術:
- 【Flashback】Flashback Query功能實踐
- 【Flashback】Flashback Table功能實踐
- [Flashback]Flashback Database閃回資料庫實驗Database資料庫
- oracle 閃回 flashbackOracle
- 閃回之 回收站、Flashback Drop (table、index、trigger等)Index
- 【實驗】【Flashback】Flashback EXP功能實踐
- Oracle 11g開啟閃回功能FlashbackOracle
- Backup And Recovery User's Guide-使用閃回刪除來回退DROP TABLE操作GUIIDE
- 【備份恢復】 閃回技術之閃回刪除
- Flashback閃回技術
- 使用dbms_flashback工具包實現閃回查詢功能
- 【實驗】【Flashback】Flashback Transaction Query功能實踐
- Oracle 11g 閃回刪除Oracle
- Oracle 閃回刪除表原理分析Oracle
- 啟用Flashback Database閃回資料庫功能(閃回區滿解決辦法 )Database資料庫
- flashback query閃回資料
- Flashback Query閃回查詢
- Oracle 閃回特性(FLASHBACK DATABASE)OracleDatabase
- Oracle閃回刪除恢復誤刪資料Oracle
- [Flashback]開啟資料庫閃回資料庫功能資料庫
- [閃回特性之閃回版本查詢]Flashback Version Query
- Flashback Database 閃回資料庫Database資料庫
- 【Mysql】mysql閃回flashback-5.7MySql
- 閃回查詢找到誤刪除資料
- Oracle -- 閃回恢復區---實踐1---閃回庫Oracle
- 【Flashback】使用閃回功能快速恢復使用者的誤操作