oracle学习之Recycle bin(回收站)

查看回收站状态

select * from V$parameter WHERE Name = 'recyclebin'; 

修改回收站状态

--如果是单个session
alter session set recyclebin=on;--开启
alter session set recyclebin=off;--关闭
--如果是所有session
--10g
alter system set recyclebin=on;--开启 
alter system set recyclebin=off;--关闭
--11g
alter system set recyclebin=on deferred;--开启 
alter system set recyclebin=off deferred;--关闭

查看回收站内容

select * from user_recyclebin;
select * from recyclebin;

清空回收站

purge table table_name;--清空单个
purge recyclebin;--清空所有
purge dba_recyclebin;--清空所有

还原回收站

注意:

如果将表drop掉,那么索引也被drop掉了,即便把表找回来了,但是你的索引和约束呢?表恢复后一定要将表上的索引重建建立起来(切记),索引丢了最多影响性能,约束没了可能会造成业务数据混乱

flashback table "TABLE_NAME" to before drop;--注意引号和大小写
flashback table "TABLE_NAME" to before drop rename to new_table_name;--如果要回收的表名已经存在则需要重命名

拓展

如果同一对像多次删除怎么在recyclebin中识别?
dba_recyclebin中对每删除一个对像都会以BIN$进行命名,同时会有相应的dropscn、createtime、droptime可以跟据这些对像进行定位,然后进行恢复

如何不经过回收站直接删除并释放所占用空间?
drop table table_name purge;

ORACLE空间利用原则
1.使用现有的表空间的未使用空间
2.如果没有了空闲空间,则检查回收站,对于回收站的对象按照先进先出的原则,对于最先删除的对象,oracle在空间不足之时会最先从回收站删除以满足新分配空间的需求
3.如果回收站也没有对象可以清理,则检查表空间是否自扩展,如果自扩展则扩展表空间,然后分配新空间
4.如果表空间非自扩展,或者已经不能自扩展(到达最大限制),则直接报表空间不足错误,程序终止

DROP掉的对像是否都会经过回收站?
以下几种drop不会将相关对像放进回收站recyclebin中
drop tablespace :会将recyclebin中所有属于该tablespace的对像清除
drop user :会将recyclebin中所有属于该用户的对像清除
drop cluster : 会将recyclebin中所有属于该cluster的成员对像清除
drop type : 会将recyclebin中所有依赖该type对像清除
另外还需要注意一种情况,对像所在的表空间要有足够的空间,不然就算drop掉经过recyclebin由于空间不足oracle会自动删除的哦(切记)!

 

转载于:https://www.cnblogs.com/yong198707/p/7326588.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值