oracle 表空间及表大小查看

今天看数据库的表空间,感觉赛了很多东西,表空间文件太大了。

找了下资料,先查询表所占空间大小,使用如下语句查看:

SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MBYTESE
  FROM USER_SEGMENTS
 WHERE SEGMENT_TYPE = 'TABLE'
 GROUP BY SEGMENT_NAME;
  或者
Select Segment_Name,Sum(bytes)/1024/1024 as sizeof From User_Extents Group By Segment_Name order by sizeof desc
 
一般大数据量的删全表数据时,使用truncate table
truncate table会释放表空间。
delete table需要ALTER TABLESPACE *** COALESCE; 才有空间
truncate table没有事务概念,执行完了就数据全清了。
truncate 会把 highwatermark 回归至 0  当下一次再插入新记录时就会快一些啦。
truncate table Index也会删掉不是指drop index ;
注意:
删除数据不能缩小表空间,只是可再利用的多了.
要实际缩小,让操作系统可以利用,需要先把表move tablespace
也可以在原来的tablespace上move一遍,再缩小tablespace就可以了.
例如:
alter table your_table move tablespace yourtablespace;
一般大数据量的删全表数据时,使用truncate table truncate table会释放表空间。 delete table需要ALTER TABLESPACE *** COALESCE; 才有空间 truncate table没有事务概念,执行完了就数据全清了。 truncate 会把 highwatermark 回归至 0  当下一次再插入新记录时就会快一些啦。 truncate table Index也会删掉不是指drop index ; 注意:
删除数据不能缩小表空间,只是可再利用的多了.
要实际缩小,让操作系统可以利用,需要先把表move tablespace
也可以在原来的tablespace上move一遍,再缩小tablespace就可以了.
例如:
alter table your_table move tablespace yourtablespace;
删除数据不能缩小表空间,只是可再利用的多了. 要实际缩小,让操作系统可以利用,需要先把表move tablespace 也可以在原来的tablespace上move一遍,再缩小tablespace就可以了. 例如: alter table your_table move tablespace yourtablespace;

猜你喜欢

转载自xiaoyaocao.iteye.com/blog/1866062