如何计算ORACLE表空间里面某个段所占用的存储空间大小?
概述
之所以写这篇文章是刚好有朋友问了我ORACLE表空间里面某一张表所占用的存储空间大小怎么算,所以就针对这方面顺便总结下oracle各个段要怎么去计算存储空间大小,如表段、索引段、回滚段等。
思路:
每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。这里我们可以通过user_segments视图来统计各个段的大小和相关信息。
查看table段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='TABLE' group by segment_name,blocks,extents
假设你要查某个表加个where条件判断下就可以了,这里就不写啦~
查看TABLE PARTITION段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='TABLE PARTITION' group by segment_name,blocks,extents
查看INDEX段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='INDEX' group by segment_name,blocks,extents
查看INDEX PARTITION段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='INDEX PARTITION' group by segment_name,blocks,extents
查看CLUSTER段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='CLUSTER' group by segment_name,blocks,extents
查看TYPE2 UNDO段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='TYPE2 UNDO' group by segment_name,blocks,extents
查看回滚段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='ROLLBACK' group by segment_name,blocks,extents
查看NESTED TABLE段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='NESTED TABLE' group by segment_name,blocks,extents
查看LOBINDEX段存储空间大小
select segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments where segment_type='LOBINDEX' group by segment_name,blocks,extents
联合查询
select segment_type,segment_name, sum(bytes)/1024/1024 Mb,blocks,extents from user_segments group by segment_type,segment_name,blocks,extents
总结:
上面是测试环境,不是生产环境,所以占用的存储都不大,大家可以对你们的千万数据的表和几百数据的表去分别计算一下,就有个比较明显的把握了。
后面会分享更多DBA和devops方面的内容,感兴趣的朋友可以关注下!!