Oracle回收站使用

Oracle数据库中的回收站功能允许用户在不依赖数据库还原的情况下恢复删除的表。当drop一张表时,数据并未真正删除,而是移动到回收站。通过检查回收站状态并使用特定SQL语句,如`FLASHBACK TABLE`,可以恢复或重命名已删除的表。然而,系统表空间中的表在drop后无法通过回收站恢复。

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

在oracle中drop一张表,并未真正的删除,只是把数据自定中把该表重命名了(sys表空间除外),想要恢复表数据不必通过数据库还原来实现,此时,可以在Oracle回收站中找回该表的数据,首先,要确保数据库的回收机制是否开启,VALUE= ON表示开启了回收站机制。OFF则表示回收站机制关闭:

命令窗口:

SQL> show parameter recyclebin

NAME                                 TYPE        VALUE

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

recyclebin                           string      ON

Sql窗口:

 

select name,value from v$parameter where name = 'recyclebin';

也可以通过sql语句进行开启或关闭:

会话级别开启/关闭

alter session set recyclebin = off/on

 

系统级别开启/关闭

alter system set recyclebin = off/on scope = spfile;--(需要重启数据库)

 

假如新建一个名为test001的表,里面字段包含了name,sex,age三个字段,

create table test001(name varchar2(10),sex varchar2(3),age varchar(3));

然后新增一条数据进去:

insert into test001 values('张三','男','20');

然后drop掉这张表:

drop table test001;

此时在查询这张表就会提示表或视图不存在的错误,

这是drop的test001表已经进入到回收站里了,可以通过以下sql语句查看回收站(recyclebin)

--查看数据库当前用户的回收站对象

select * from recyclebin;

select * from user_recyclebin;

--需要相关权限才能查询

select * from dba_recyclebin;

可以查看到查出的数据:

然后就是还原被删除的test001表,通过flashback drop实现:

 

flashback table test001 to before drop;

还原之后再通过查询:

select * from test001

这张表已经还原了,还可以还原成新的表名:

flashback table test001 to before drop rename to test002;

Flashback drop 只能用于非系统表空间和本地管理的表空间,在系统表空间中,表drop后就真的删除了,而不是存放在回收站中。

 

清空回收站的数据:

purge table tablename;--清空回收站某张表

purge recyclebin;--清空回收站所有数据

purge recyclebin tablename user scott;--清空回收站数据,但保留用户的数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值