来啦,烫,查询达梦表占用空间
想象一下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 offselect 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;