Oracle表空间清理

Oracle表空间清理

技术教程gslnedu2024-12-26 13:41:0916A+A-

一、查看表所占空间大小

--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功能的开启和关闭

  1. startup mount
  2. alter database flashback on(off)

点击这里复制本文地址 以上内容由朽木教程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

朽木教程网 © All Rights Reserved.  蜀ICP备2024111239号-8