一、查看表所占空间大小
--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)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225166.html原文链接:https://javaforall.net
