抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > Oracle计算表所占用空间大小

Oracle计算表所占用空间大小

时间:2023-02-07 23:47:45

相关推荐

数据库|mysql教程

Oracle表占用空间,Oracle表空间大小,Oracle

数据库-mysql教程

查询excel 网站源码,ubuntu什么版本好用,虚拟机安装使用tomcat,梦见头发里爬虫,php判断服务器是否正常,模板seo优化lzw

在Oracle数据库中,如何计算一个表所占用的存储空间呢?我们可以通过系统视图DBA_SEGMENTS、USER_SEGMETNS、DBA_TABLES来查看一个

android我的界面源码,x270 ubuntu,访问tomcat数据库,爬虫的营养,上海php商城平台开发,大军SEOlzw

店内点单源码,vscode怎么反编译,潮7000 ubuntu,tomcat咋注册,sqlite3 vc编程,爬虫能爬内部网络吗,php 收取邮件,宁波seo服务排名,网站模板 英文,网页设计js导航效果代码大全,html5数据统计模板lzw

在Oracle数据库中,,如何计算一个表所占用的存储空间呢?我们可以通过系统视图DBA_SEGMENTS、USER_SEGMETNS、DBA_TABLES来查看一个表所占空间的大小,如下所示:

SELECT SEGMENT_NAME TABLE_NAME

,SUM(BLOCKS)BLOCKS

,SUM(BYTES)/(1024*1024) “TABLE_SIZE[MB]”

FROM USER_SEGMENTS

WHERE SEGMENT_TYPE=’TABLE’

AND SEGMENT_NAME=&TABLE_NAME

GROUP BY SEGMENT_NAME;

SELECT SEGMENT_NAME TABLE_NAME

,SUM(BLOCKS)BLOCKS

,SUM(BYTES)/(1024*1024) “TABLE_SIZE[MB]”

FROM DBA_SEGMENTS

WHERE SEGMENT_TYPE=’TABLE’

AND SEGMENT_NAME=&TABLE_NAME

GROUP BY SEGMENT_NAME;

注意,如果你通过系统视图DBA_TABELS、USER_TABLES统计、查看表所占的空间大小,那么由于统计信息过时或总是持续有DML操作(INSERTR、UPDATE、DELETE),那么有可能用下面SQL统计出的信息可能不准确。需要先收集一下表对象的统计信息。 另外,可能每个数据库的db_block_size有所不同,不一定是8192。所以注意修改.

ANALYZE TABLE OWNER.TABLE_NAME COMPUTE STATISTICS;

EXEC DBMS_STATS.GATHER_TABLE_STATS(‘OWNER’,’TABLE_NAME’);

SELECT OWNER OWNER_NAME

,TABLE_NAMETABLE_NAME

,TABLESPACE_NAMETABLESPACE_NAME

,BLOCKS ACTUAL_BLOCKS

,BLOCKS + EMPTY_BLOCKS TOTAL_BLOCKS

,(BLOCKS + EMPTY_BLOCKS) * 8192/(1024*1024)

“TABLE_SIZE[MB]”

FROM DBA_TABLES

WHERE OWNER=&OWNER

AND TABLE_NAME=&TABLE_NAME

关于DBA_TABLES和DBA_SEGMENTS表中的block的区别,其实它们的关系如下所示:

自动段空间管理(Automatic Segment Space Management ASSM)

dba_segments.blocks = dba_tables.blocks + dba_tables.empty_blocks

本地管理表空间(Locally Managed Tablespace )

dba_segments.blocks = dba_tables.blocks + dba_tables.empty_blocks+ 1(SEGMENT HEADER BLOCK)

DBA_SEGMENTS.BLOCKS holds the total number of blocks allocated to the table.

DBA_TABLES.BLOCKS holds the total number of blocks allocated for data.

DBA_SEGMENTS中的blocks表示分配给表的存储空间,而DBA_TABLES中blocks表示表中数据实际占有的存储空间。所以这个是有细微差别的。所以你如果要查表的实际占用大小,那么就要使用DBA_TABLES来查询。查看数据库中占用存储空间从大到小的所有表对象

SELECT SEGMENT_NAME TABLE_NAME

,SUM(BLOCKS)BLOCKS

,SUM(BYTES)/(1024*1024) “TABLE_SIZE[MB]”

FROM DBA_SEGMENTS

WHERE SEGMENT_TYPE=’TABLE’

GROUP BY SEGMENT_NAME

ORDER BY BLOCKS DESC;

本文永久更新链接地址:

如果觉得《Oracle计算表所占用空间大小》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。