想象一下oracle,可以查dba_segments,但是这个不可靠(达梦官方连说明书都没有)
先拼接一个sql
set lineshow off
SELECT 'SELECT '||''''||OWNER||''''||' AS OWNER,'||''''||TABLE_NAME||''''||' AS TABLE_NAME,TABLE_USED_SPACE('||''''||OWNER||''''||','||''''||TABLE_NAME||''''||')*PAGE()/1024/1024.0 AS SIZE_MB
FROM DUAL UNION' C FROM ALL_TABLES WHERE OWNER IN ('SCOTT','TEST');
然后执行输出
注意最后一个union要丢弃。
显示分区详细
set pages 100
set define off
select sch_obj.name sch_name,
tab_obj.name tab_name,
TABLE_USED_PAGES(sch_obj.name, tab_obj.name)*(PAGE/1024) pages,
TABLE_USED_SPACE(sch_obj.name, tab_obj.name)*(PAGE/1024) bytes
from (select name, id from sysobjects where type$ = 'SCH') sch_obj, (select distinct TAB_OBJ_INNER.name,
TAB_OBJ_INNER.schid
from sysobjects TAB_OBJ_INNER,
SYSOBJECTS SCH_OBJ_INNER,
SYSOBJECTS USER_OBJ_INNER
where TAB_OBJ_INNER.type$ = 'SCHOBJ'
and TAB_OBJ_INNER.subtype$ ='UTAB'
and TAB_OBJ_INNER.NAME not like 'CTI$%$_'
and TAB_OBJ_INNER.NAME not like '%$AUX'
and TAB_OBJ_INNER.INFO3&0x100000!=0x100000
and TAB_OBJ_INNER.INFO3&0x200000!=0x200000
and TAB_OBJ_INNER.INFO3
& 0x003F not in (0x0A, 0x20, 0X13, 0X1A, 0x1B, 0x18, 0x19, 0x1C, 0x1D)
and (TAB_OBJ_INNER.INFO3 & 0x100000000) = 0
and TAB_OBJ_INNER.INFO3 & 0x003F != 13
and TAB_OBJ_INNER.INFO3 & 0x00C0 = 0
and USER_OBJ_INNER.SUBTYPE$ = 'USER'
and SCH_OBJ_INNER.ID = TAB_OBJ_INNER.SCHID
and SCH_OBJ_INNER.PID = USER_OBJ_INNER.ID
and SF_CHECK_PRIV_OPT(UID(), CURRENT_USERTYPE(), TAB_OBJ_INNER.ID, USER_OBJ_INNER.ID, USER_OBJ_INNER.INFO1, TAB_OBJ_INNER.ID) = 1) tab_obj
where sch_obj.id = tab_obj.schid and sch_obj.name='TEST'
order by sch_name, tab_name ;
统计大对象,肯定是很多人想要的
select top 10 sch_name, tab_name,bytes /1024 mb from (
select sch_obj.name sch_name,
tab_obj.name tab_name,
TABLE_USED_PAGES(sch_obj.name, tab_obj.name)*(PAGE/1024) pages,
TABLE_USED_SPACE(sch_obj.name, tab_obj.name)*(PAGE/1024) bytes
from (select name, id from sysobjects where type$ = 'SCH') sch_obj, (select distinct TAB_OBJ_INNER.name,
TAB_OBJ_INNER.schid
from sysobjects TAB_OBJ_INNER,
SYSOBJECTS SCH_OBJ_INNER,
SYSOBJECTS USER_OBJ_INNER
where TAB_OBJ_INNER.type$ = 'SCHOBJ'
and TAB_OBJ_INNER.subtype$ ='UTAB'
and TAB_OBJ_INNER.NAME not like 'CTI$%$_'
and TAB_OBJ_INNER.NAME not like '%$AUX'
and TAB_OBJ_INNER.INFO3&0x100000!=0x100000
and TAB_OBJ_INNER.INFO3&0x200000!=0x200000
and TAB_OBJ_INNER.INFO3
& 0x003F not in (0x0A, 0x20, 0X13, 0X1A, 0x1B, 0x18, 0x19, 0x1C, 0x1D)
and (TAB_OBJ_INNER.INFO3 & 0x100000000) = 0
and TAB_OBJ_INNER.INFO3 & 0x003F != 13
and TAB_OBJ_INNER.INFO3 & 0x00C0 = 0
and USER_OBJ_INNER.SUBTYPE$ = 'USER'
and SCH_OBJ_INNER.ID = TAB_OBJ_INNER.SCHID
and SCH_OBJ_INNER.PID = USER_OBJ_INNER.ID
and SF_CHECK_PRIV_OPT(UID(), CURRENT_USERTYPE(), TAB_OBJ_INNER.ID, USER_OBJ_INNER.ID, USER_OBJ_INNER.INFO1, TAB_OBJ_INNER.ID) = 1) tab_obj
where sch_obj.id = tab_obj.schid and sch_obj.name='TEST')
order by mb desc;