Oracle查询表占用的空间(表大小)
Oracle查询表占用的空间(表大小)
一、方法一:使用dbms_space包的object_space_usage函数来查表大小情况。
上SQL:
DECLARE
su NUMBER;
sa NUMBER;
cp NUMBER;
BEGIN
dbms_space.object_space_usage('LOG'
,'BIG_TABLE'
,'TABLE'
,NULL
,su
,sa
,cp);
dbms_output.put_line('Space Used: ' || to_char(su));
dbms_output.put_line('Space Allocated: ' || to_char(sa));
dbms_output.put_line('Chained Percentage: ' || to_char(cp));
END;
输出结果:
二、方法二:查dba_extents视图。
上SQL:
SELECT segment_name "表名",
segment_type "对象类型",
sum(bytes) / 1024 / 1024 "占用空间(MB)"
FROM dba_extents
WHERE 1=1
-- AND segment_name = '表名'
GROUP BY segment_name, segment_type
ORDER BY "占用空间(MB)" DESC;
三、方法三:查dba_segments视图。
上SQL:
SELECT owner,
segment_name,
segment_type,
sum(bytes) / 1024 / 1024 "占用空间(MB)"
FROM dba_segments
WHERE 1=1
-- AND owner = '表所有者'
GROUP BY owner, segment_name, segment_type
ORDER BY "占用空间(MB)" DESC;