Oracle回收站介绍

Oracle回收站介绍

 

Oracle 10g开始,Oracle数据库引入了一个回收站(Recycle Bin)的数据库对象。回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数据库删除,仍然会占用空间。除非是由于用户手工进行purge或者因为存储空间不够而被数据库清掉。

 

可以使用下面的查询语句来查看回收站的当前状态:

select value from v$parameter where name='recyclebin';
如果返回值为“on”表明回收站是启动的,“off”表明是关闭的。默认是启动的。

可以手动启动/关闭系统或会话中的回收站:

ALTER SYSTEM SET recyclebin = ON;
ALTER SESSION SET recyclebin = ON;
ALTER SYSTEM SET recyclebin = OFF;
ALTER SESSION SET recyclebin = OFF;


可以使用下面的任意一个语句来获得回收站中的对象

SELECT * FROM RECYCLEBIN;
SELECT * FROM USER_RECYCLEBIN;
SELECT * FROM DBA_RECYCLEBIN;

 

试验一:

1 创建表

SQL> create table t(id int);

表已创建。

 

2 插入数据

SQL> insert into t values(10);

已创建 1 行。

 

3 删除表

SQL> drop table t;

表已删除。

 

4 从回收站中查询被删除的表的信息

SQL> select * from user_recyclebin;

OBJECT_NAME                    ORIGINAL_NAM OPERATION TYPE  TS_NAME  CREATETIME          DROPTIME             DROPSCN PARTITION_NAME  CAN CAN  RELATED BASE_OBJECT PURGE_OBJECT SPACE

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

BIN$A2N1R4Z09T/gUKjAhfUUwg==$0 T            DROP      TABLE USERS    2014-09-19:11:11:13 2014-09-19:11:11:32  1095550                 YES YES    73435       73435        73435     8

 

5 从回收站中恢复表

SQL> flashback table t to before drop;

闪回完成。

 

6 查询表中的数据,看是否和未删除前的数据一致

SQL> select * from t;

        ID

----------

        10

 

7 删除表并把从回收站中清空该表

SQL> drop table t purge;

表已删除。

 

8 从回收站中查询是否还有该表的信息

SQL> select * from user_recyclebin;

未选定行

 

试验二:

1 创建两个表

SQL> create table t1(id number);

表已创建。

SQL> commit;

提交完成。

 

SQL> create table t2(id number);

表已创建。

SQL> commit;

表已创建。

 

2 删除表

SQL> drop table t1;

表已删除。

 

SQL> drop table t2;

表已删除。

 

3 从回收站中查询被删除表的信息

SQL> select * from recyclebin;

OBJECT_NAME                    ORIGINAL_NAME   OPERATION TYPE  TS_NAME  CREATETIME          DROPTIME               DROPSCN PARTITION_NAME  CAN CAN  RELATED BASE_OBJECT PURGE_OBJECT  SPACE

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

BIN$A2bmhJLBbL7gUKjAhfUscg==$0 T1              DROP      TABLE USERS    2014-09-19:15:18:44 2014-09-19:15:19:18    1103864                 YES YES    73446       73446        73446      0

BIN$A2bmhJLCbL7gUKjAhfUscg==$0 T2              DROP      TABLE USERS    2014-09-19:15:19:10 2014-09-19:15:19:26    1103878                 YES YES    73447       73447        73447      0

 

4 清空回收站

SQL> purge recyclebin;

回收站已清空。

 

5 验证回收站是否为空

SQL> select * from recyclebin;

未选定行

 

请使用浏览器的分享功能分享到微信等