## 当前用户表占用空间 ```sql select SEGMENT_NAME as TABLE_NAME,BYTES/1024/1024 as 大小MB from USER_SEGMENTS where SEGMENT_TYPE='TABLE' order by BYTES desc; ``` ## 所有用户表占用空间 ```sql select OWNER,SEGMENT_NAME as TABLE_NAME,BYTES/1024/1024 as 大小MB from DBA_SEGMENTS where SEGMENT_TYPE='TABLE' order by OWNER,BYTES desc; ``` ## 查询表空间及表空间所占空间大小 ```sql SELECT tablespace_name, sum( bytes ) / 1024 / 1024 FROM dba_data_files GROUP BY tablespace_name; ``` ## 查询表空间物理文件的名称及大小 ```sql SELECT a.tablespace_name, total, free, total - free AS used, substr( free / total * 100, 1, 5 ) AS "FREE%", substr( ( total - free ) / total * 100, 1, 5 ) AS "USED%" FROM (SELECT tablespace_name, sum( bytes ) / 1024 / 1024 AS total FROM dba_data_files GROUP BY tablespace_name) a, (SELECT tablespace_name, sum( bytes ) / 1024 / 1024 AS free FROM dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name ORDER BY a.tablespace_name; ``` ## 查询所有表空间以及每个表空间的大小,已用空间,剩余空间,使用率和空闲率 ```sql SELECT a.tablespace_name, total, free, total - free AS used, substr( free / total * 100, 1, 5 ) AS "FREE%", substr( ( total - free ) / total * 100, 1, 5 ) AS "USED%" FROM (SELECT tablespace_name, sum( bytes ) / 1024 / 1024 AS total FROM dba_data_files GROUP BY tablespace_name) a, (SELECT tablespace_name, sum( bytes ) / 1024 / 1024 AS free FROM dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name ORDER BY a.tablespace_name; ``` ## 查询某个具体的表所占空间的大小 ```sql SELECT t.segment_name, t.segment_type, sum( t.bytes / 1024 / 1024 ) "占用空间(M)" FROM dba_segments t WHERE t.segment_type = 'TABLE' AND t.segment_name = 'TABLE_NAME' GROUP BY OWNER, t.segment_name, t.segment_type; ``` ## 查看每个表所占空间大小 ```sql select * from ( select t.tablespace_name,t.owner, t.segment_name, t.segment_type, sum(t.bytes / 1024 / 1024) mb from dba_segments t where t.segment_type='TABLE' group by t.tablespace_name,t.OWNER, t.segment_name, t.segment_type ) t order by t.mb desc ; ```