當同一張表被多次DROP後,會在“資料庫資源回收筒”中記錄多個被删除的版本.這裡我們給出對DROP的指定版本進行恢複的方法和過程。
1.确認資料庫閃回功能是否開啟
[email protected]> show parameter recyclebin
NAME TYPE VALUE
------------------ -------------------- ------------------
recyclebin string on
2.初始化環境,模拟同一張表T被三次DROP過程
[email protected]> create table t (x int);
Table created.
[email protected]> insert into t values (1);
1 row created.
[email protected]> commit;
Commit complete.
[email protected]> select * from t;
X
----------
1
[email protected]> drop table t;
Table dropped.
[email protected]> create table t (x int);
Table created.
[email protected]> insert into t values (1);
1 row created.
[email protected]> insert into t values (2);
1 row created.
[email protected]> commit;
Commit complete.
[email protected]> select * from t;
X
----------
1
2
[email protected]> drop table t;
Table dropped.
[email protected]> create table t (x int);
Table created.
[email protected]> insert into t values (1);
1 row created.
[email protected]> insert into t values (2);
1 row created.
[email protected]> insert into t values (3);
1 row created.
[email protected]> commit;
Commit complete.
[email protected]> select * from t;
X
----------
1
2
3
[email protected]> drop table t;
Table dropped.
到此,表T已經被三次DROP,每次DROP之前所包含的資料不相同。
3.使用Flashback技術恢複表到指定版本
1)恢複要求
恢複到T表到包含兩條資料時的版本。
2)獲得資源回收筒中的資訊
(1)第一種方法:查詢RECYCLEBIN内容
[email protected]> SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE FROM RECYCLEBIN;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ ------------------------ --------
BIN$o3eq5kyQ6g/gQMKQt8Au+g==$0 T TABLE
BIN$o3eq5kyO6g/gQMKQt8Au+g==$0 T TABLE
BIN$o3eq5kyP6g/gQMKQt8Au+g==$0 T TABLE
(2)第二種方法:使用show recyclebin指令
更簡潔地檢視資源回收筒中資訊的方法是使用“show recyclebin”指令
[email protected]> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$o3eq5kyQ6g/gQMKQt8Au+g==$0 TABLE 2011-05-25:20:12:08
T BIN$o3eq5kyP6g/gQMKQt8Au+g==$0 TABLE 2011-05-25:20:11:41
T BIN$o3eq5kyO6g/gQMKQt8Au+g==$0 TABLE 2011-05-25:20:11:10
3)确定T表被drop的三個版本哪個是我們需要恢複的對象
資源回收筒中辨別的對象可以通過雙引号引用的方式查詢内容,同時可以結合表T被删除的時間進行确定。
[email protected]> select * from "BIN$o3eq5kyQ6g/gQMKQt8Au+g==$0";
X
----------
1
2
3
[email protected]> select * from "BIN$o3eq5kyP6g/gQMKQt8Au+g==$0";
X
----------
1
2
[email protected]> select * from "BIN$o3eq5kyO6g/gQMKQt8Au+g==$0";
X
----------
1
可見其中的“BIN$o3eq5kyP6g/gQMKQt8Au+g==$0”是我們需要恢複的目标。
4)對資源回收筒中指定内容進行閃回
[email protected]> flashback table "BIN$o3eq5kyP6g/gQMKQt8Au+g==$0" to before drop;
Flashback complete.
5)确認恢複成果
[email protected]> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BIN$o3eq5kyO6g/gQMKQt8Au+g==$0 TABLE
BIN$o3eq5kyQ6g/gQMKQt8Au+g==$0 TABLE
T TABLE
[email protected]> select * from t;
X
----------
1
2
可見此時T表已經被恢複成功。
4.小結
本文給出了使用Flashback Drop技術閃回指定版本表資料的詳細方法和過程。單就閃回方法來說很簡單,不過重點要放在如何定位資源回收筒中哪個版本是我們需要閃回的目标。
Good luck.
secooler
11.05.25
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-696325/,如需轉載,請注明出處,否則将追究法律責任。
轉載于:http://blog.itpub.net/519536/viewspace-696325/