Oracle 查看所有表大小的SQL


Oracle 查看所有表大小的SQL

比较坑的是 lob 字段和 表的大小不在一个地方

为了出结果 我这边使用了 union all 慢的一逼...

SELECT
    sum( tablesize ),
    tablename 
FROM
    (
    SELECT
        sum( C.bytes ) / 1024 / 1024 AS tablesize,
        C.table_name AS tablename 
    FROM
        ( SELECT A.table_name, B.bytes FROM user_lobs A, user_extents B WHERE A.segment_name = B.segment_name ) C 
    GROUP BY
        C.table_name UNION ALL
    SELECT
        sum( bytes ) / 1024 / 1024 AS tablesize,
        segment_name AS tablename 
    FROM
        user_extents 
    WHERE
        segment_type = 'TABLE' 
    GROUP BY
        segment_name 
    ) 
GROUP BY
    tablename 
ORDER BY
    1 DESC

相关