天天看点

【Flashback】使用Flashback Drop技术闪回被DROP表的指定版本数据

  当同一张表被多次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/