获取Oracle表大小的三种方法,
目录
- 直接查询段大小
- 计算表数据估算大小(基于统计信息)
- 汇总表及索引的总大小
直接查询段大小
表的存储空间信息存储在段(Segment)中,通过以下 SQL 可以获取表的大小(包含数据、索引、LOB 等占用的空间)
SELECT
segment_name AS table_name,
bytes,
ROUND(bytes / 1024 / 1024, 2) AS size_mb
FROM
user_segments -- 根据权限替换为 dba_segments 或 all_segments
WHERE
segment_type = 'TABLE'
AND segment_name = 'AI_TOOLS';

确保表名使用大写,因为 Oracle 数据字典默认存储大写对象名。
bytes字段表示分配的存储空间,可能包含未使用的块。若表有分区,需查询
DBA_TAB_PARTITIONS视图获取各分区大小。
计算表数据估算大小(基于统计信息)
结合 DBA_TABLES 中的行数和平均行长估算数据量(需更新统计信息):
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(
ownname => 'NEW_USER',
tabname => 'AI_TOOLS'
);
END;
/
SELECT
table_name,
num_rows,
avg_row_len,
ROUND((num_rows * avg_row_len) / 1024 / 1024, 2) AS estimated_size_mb
FROM
user_tables
WHERE
table_name = 'AI_TOOLS';

汇总表及索引的总大小
SELECT
'TABLE' AS segment_type,
segment_name,
bytes AS table_size_bytes,
ROUND(bytes / 1024 / 1024, 2) AS table_size_mb
FROM
user_segments
WHERE
segment_type = 'TABLE'
AND segment_name = 'YOUR_TABLE_NAME'
UNION ALL
SELECT
'INDEX' AS segment_type,
segment_name,
bytes AS index_size_bytes,
ROUND(bytes / 1024 / 1024, 2) AS index_size_mb
FROM
user_segments
WHERE
segment_type = 'INDEX'
AND segment_name IN (
SELECT index_name
FROM user_indexes
WHERE table_name = 'YOUR_TABLE_NAME'
);
到此这篇关于获取Oracle表大小的三种方法的文章就介绍到这了,更多相关获取Oracle表大小内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!
您可能感兴趣的文章:- Oracle查询表占用的空间(表大小)的3种方法
- Oracle表空间大小如何查看及扩增
- Oracle收缩减小表空间大小的方法详解
- Oracle查询表占用空间大小方式
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。