Oracle表空间清理

本文详细介绍Oracle数据库中如何查看表、索引及分区表占用的空间,提供删除表和分区的正确方法,避免残留文件占用空间。同时,教授如何清理回收站中的垃圾表,包括查询、删除和闪回已删除的表,以及设置闪回功能。

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

一、查看表所占空间大小

--1、查看用户表、索引、分区表占用空间
select segment_name, sum(bytes)/1024/1024 as Mbytes from user_segments group by segment_name order by Mbytes desc;

--2、表占用空间:
select segment_name, sum(bytes)/1024/1024 as Mbytes from user_segments where segment_type='TABLE' group by segment_name order by Mbytes desc;

--3、索引占用空间:
select segment_name ,sum(bytes)/1024/1024 as Mbytes from user_segments where segment_type ='INDEX' group by segment_name order by Mbytes desc;

--4、分区表TABLE PARTITION占用空间:
select segment_name,sum(bytes)/1024/1024 as Mbytes from user_segments where segment_type='TABLE PARTITION' group by segment_name order by Mbytes desc;

二、删除不需要的表和分区

使用drop命令删除不需要的表和分区,删除后再执行[语句1],发现表里多了以BIN开头的文件,而且仍然占用很大空间。

oracle drop table的时候,不会彻底删除该表,它将drop的表放到了自己的回收站里,放到回收站的表就是我们看到的形如bin$/rt62vkdt5wmrjfcz28eja==$0的表,其中包含了表的结构定义信息和数据。

三、清理垃圾表

PURGE RECYCLEBIN

四、扩展

--查询所有垃圾表
select * from recyclebin where type='TABLE';
 
--删除回收站中所有的表
PURGE RECYCLEBIN     -------这语句就能清除所有以BIN开头的残留文件
 
--删除指定的垃圾表
PURGE TABLE TABLE_NAME
 
--闪回被删除的表
FLASHBACK TABLE table_name TO BEFORE DROP;
 
--Drop表时不产生Bin型表
DROP TABLE "TableName" purge;
  
--设置falshback功能的开启和关闭
startup mount
alter database flashback on(off)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值