flashback系列文章二(flashback drop)

本文介绍Oracle数据库中回收站的功能及使用方法,包括如何查看回收站内容、使用闪回删除恢复表、手动清除回收站及在不同情况下管理回收站。

SQL> show parameter recyclebin

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin                           string      on

recyclebin被置为on之后,在数据库中drop表,实际上是改名后被放到了回收站。

SQL> create table bin_test(id number);

Table created.

SQL> insert into bin_test values(1);

1 row created.

SQL> insert into bin_test values(2);

1 row created.

SQL> insert into bin_test values(3);

1 row created.

SQL> drop table bin_test;

Table dropped.
SQL> show recyclebin;
SQL> show user
USER is "SYS"
居然没有任何输出,是因为sys用户的drop操作是不会放到回收站的(oracle不推荐sys用户做业务)。

SQL> conn scott/tiger
Connected.

SQL> create table bin_test(id number);

Table created.

SQL> insert into bin_test values(1);

1 row created.

SQL> insert into bin_test values(2);

1 row created.

SQL> insert into bin_test values(3);

1 row created.

SQL> drop table bin_test;

Table dropped.

SQL> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
BIN_TEST         BIN$7swqwFDywVjgQKjAZGJVhg==$0 TABLE        2013-12-31:10:20:22

SQL> flashback table bin_test to before drop;

Flashback complete.

SQL> select * from bin_test;

        ID
----------
         1
         2
         3
SQL> show recyclebin
回收站的bin_test又被重命名回去了。
也可以使用rename给表恢复的表改个名字

SQL> flashback table bin_test to before drop rename to bin_test1;

Flashback complete.

SQL> select * from bin_test1;

        ID
----------
         1
         2
         3
再试试drop多个同名的表,恢复的应该是哪个?

SQL> create table bin_test1(id number);

Table created.

SQL> insert into bin_test1 values(1);

1 row created.

SQL> drop table bin_test1;

Table dropped.

SQL> create table bin_test1(id number);

Table created.

SQL> insert into bin_test1 values(2);

1 row created.

SQL> drop table bin_test1;

Table dropped.

SQL> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
BIN_TEST1        BIN$7swqwFD1wVjgQKjAZGJVhg==$0 TABLE        2013-12-31:10:30:02
BIN_TEST1        BIN$7swqwFD0wVjgQKjAZGJVhg==$0 TABLE        2013-12-31:10:29:34
可以看到回收站里面有两个表了

SQL> flashback table bin_test1 to before drop;

Flashback complete.

SQL> select * from bin_test1;

        ID
----------
         2
SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
BIN_TEST1        BIN$7swqwFD0wVjgQKjAZGJVhg==$0 TABLE        2013-12-31:10:29:34
flashback drop恢复了最新删除的表。

实际上,回收站里面的对象是可以当表来进行查询的

SQL> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
BIN_TEST1        BIN$7swqwFD0wVjgQKjAZGJVhg==$0 TABLE        2013-12-31:10:29:34
SQL> select * from "BIN$7swqwFD0wVjgQKjAZGJVhg==$0";

        ID
----------
         1

1、回收站的相关视图:recyclebin/user_recyclebin/dba_recyclebin. 也可以通过show recyclebin来进行查看

2、可以手动清除回收站内容:purge recyclebin(或purge table original_name);

3、彻底删除表:drop table table_name purge;
4、也可以通过purge tablespace tablespace_name或者purge tablespace tablespace_name user username来清理回收站的对象
5、也可以在session级别关闭recyclebin,alter session set recyclebin on/off;
6、flashback drop恢复表时,会把索引和triger等对象一并恢复,但是名称不会变回原来,需要手动改下。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26613085/viewspace-1066013/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26613085/viewspace-1066013/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值