oracle数据库中的回收站,Oracle回收站介绍

本文详细介绍了Oracle数据库的回收站功能,从10g版本开始引入,用于保存被删除的对象信息。回收站实际上是一个数据字典表,占用空间直到被手动清理或因空间不足被自动删除。通过查询v$parameter可以检查回收站状态,并使用ALTER SYSTEM或ALTER SESSION命令开启或关闭。文中还提供了回收站查询和对象恢复的SQL语句,以及如何从回收站中彻底删除并清空对象的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本帖最后由 zhenghaishu 于 2014-9-19 15:32 编辑

Oracle回收站介绍

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

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

select value from v$parameter wherename='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 OPERATIONTYPE  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:132014-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:442014-09-19:15:19:18    1103864                 YES YES    73446      73446        73446      0

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

4 清空回收站

SQL> purge recyclebin;

回收站已清空。

5 验证回收站是否为空

SQL> select * from recyclebin;

未选定行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值