oracle应用过程中出现表空间不足的时候,为了知道具体哪些表占用空间较大我们可以用如下sql查询:
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name order by Sum(bytes) desc;
查询结过出现SYS_LOB***$$这种Segment_Name,记录着大字段占用空间。我们可用dba_objects表查询映射的是哪一个表的大字段;object_id为LOB后到C之间的那串数字。
select object_name,status from dba_objects where object_id='0000076452';
根据以上找出占用较大的表
如果为了保持表中数据不动,但是大字段记录并不重要我们可以把对应的字段置空,然后用move去回收空间。
update tab_name a set a.大字段名称='';
alter table tab_name move lob(大字段名称) store as (tablespace 表所用的表空间名称);
其他操作方法可参考如下文章:
https://www.cnblogs.com/hmwh/p/12380211.html