天天看點

flashback drop 誤删除的表後的恢複及對資源回收筒中表的操作

1.誤删除表,使用flashback drop功能找回

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID

------------------------------ ------- ----------

TEST                           TABLE

SQL> select * from test;

         A

----------

         1

         2

         3

         4

         5

         6

         7

         8

         0.

SQL> show parameter recyclebin;    -驗證資源回收筒是否打開--如未打開不能使用閃回DROP--11G預設打開

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

recyclebin                           string      on

SQL> show recyclebin;

SQL> drop table test;

Table dropped.

查詢資源回收筒,删除的表在裡面,并被系統自己指令--BIN$開頭一長串---從ORIGINAL NAME 列可以看到表的原名是test

SQL> show recyclebin;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE   DROP TIME

---------------- ------------------------------ ------------ -------------------

TEST             BIN$387tHPzSqO/gQKjA3QEnzg==$0 TABLE        2013-06-23:17:29:01

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID

------------------------------ ------- ----------

BIN$387tHPzSqO/gQKjA3QEnzg==$0 TABLE

使用資源回收筒中的BIN$的表名也能查詢到表中資料

SQL> select * from "BIN$387tHPzSqO/gQKjA3QEnzg==$0";

         A

----------

         1

         2

         3

         4

         5

         6

         7

         8

執行閃回删除表的指令并查詢資料是否完整:

SQL> flashback table test to before drop;

Flashback complete.

SQL> select * from "BIN$387tHPzSqO/gQKjA3QEnzg==$0";

select * from "BIN$387tHPzSqO/gQKjA3QEnzg==$0"

              *

ERROR at line 1:

ORA-00942: table or view does not exist

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID

------------------------------ ------- ----------

TEST                           TABLE

SQL> select * from test;

         A

----------

         1

         2

         3

         4

         5

         6

         7

         8

2.閃回删除并将表重命名

[email protected]>select * from test5;

        ID NAME

---------- ----------

         2 b       

[email protected]>drop table test5;

Table dropped.

[email protected]>flashback table test5 to before drop rename to test6;

Flashback complete.

[email protected]>select * from test6;

        ID NAME

---------- ----------

         2 b

3.資源回收筒内檢視删除的表,單個删除資源回收筒裡的表、全部清空資源回收筒。

SQL> create table test2 as select * fromtest1;

表已建立。

SQL> insert into test2values('00002','baishan2');

已建立 1 行。

SQL> select * from test2;

ID   NAME

----- ----------

00001 baishan

00002 baishan2

SQL> show recyclebin

SQL> drop table test1;

表已删除。

删除表後檢視資源回收筒裡,可以看到删除的表名,及删除時間

SQL> showrecyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

---------------------------------------------- ------------ -------------------

TEST1            BIN$kUfBJ3qcTSiLxqU6hmoEcw==$0TABLE        2013-02-10:12:17:11

SQL> select * from cat;

TABLE_NAME                     TABLE_TYPE

------------------------------ -----------

BIN$kUfBJ3qcTSiLxqU6hmoEcw==$0 TABLE

TEST                           TABLE

TEST2                          TABLE

SQL> create table test3 as select * fromtest2;

表已建立。

SQL> select * from cat;

TABLE_NAME                     TABLE_TYPE

------------------------------ -----------

BIN$kUfBJ3qcTSiLxqU6hmoEcw==$0 TABLE

TEST                           TABLE

TEST2                          TABLE

TEST3                          TABLE

DROP時使用purge參數删除的表被直接删除,不存放在資源回收筒。

SQL> drop table test2 purge;

表已删除。

SQL> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

---------------------------------------------- ------------ -------------------

TEST1            BIN$kUfBJ3qcTSiLxqU6hmoEcw==$0TABLE        2013-02-10:12:17:11

清空資源回收筒

SQL> purge  recyclebin;

資源回收筒已清空。 

SQL> drop table test2;

表已删除。

SQL> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

---------------------------------------------- ------------ -------------------

TEST2            BIN$UabVC8wiRx+GdsN4VT5bRw==$0TABLE        2013-02-12:17:10:46

SQL> drop table test3;

表已删除。

SQL> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

---------------------------------------------- ------------ -------------------

TEST2            BIN$UabVC8wiRx+GdsN4VT5bRw==$0TABLE        2013-02-12:17:10:46

TEST3            BIN$n8CZgrwoSRO16TFB/dXOcA==$0TABLE        2013-02-12:17:11:35

清除資源回收筒中的test2表。

SQL> purge tabletest2;

表已清除。

SQL> show recyclebin

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME

---------------------------------------------- ------------ -------------------

TEST3            BIN$n8CZgrwoSRO16TFB/dXOcA==$0TABLE        2013-02-12:17:11:35

SQL> flashback table test3 to before drop;

閃回完成。

SQL> show recyclebin

SQL> select count(*) from test3;

 COUNT(*)

----------

        2