开发者

获取Oracle表大小的三种方法

开发者 https://www.devze.com 2025-04-04 08:57 出处:网络 作者: 愿与狸花过一生
目录直接查询段大小计算表数据估算大小(基于统计信息)汇总表及索引的总大小直接查询段大小
目录
  • 直接查询段大小
  • 计算表数据估算大小(基于统计信息)
  • 汇总表及索引的总大小

直接查询段大小

表的存储空间信息存储在段(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表大小的三种方法

  • 确保表名使用大写,因为 oracle 数据字典默认存js储大写对象名。

  • 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_androidlen,
    ROUND((num_rows * avg_row_len) / 1024 / 1024, 2) AS estimated_size_mb
FROM
    user_tables
WHERE
    table_name = 'AI_TOOLS';

获取Oracle表大小的三种方法

汇总表及索引的总大小

SELECT 
    'TABLE' AS segment_type,
    sejsgment_name,
    bytes AS table_size_bytes,
    ROUND(bytes / 1024 / 1024, 2) AS table_size_mpythonb
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 (
        SE编程客栈LECT index_name 
        FROM user_indexes 
        WHERE table_name = 'YOUR_TABLE_NAME'
    );

到此这篇关于获取Oracle表大小的三种方法的文章就介绍到这了,更多相关获取Oracle表大小内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号