表空间

  1. select t.tablespace_name, round(sum(b.bytes / 1024 / 1024))
  2. from dba_tablespaces t, dba_data_files b
  3. where t.tablespace_name = b.tablespace_name
  4. group by t.tablespace_name;

临时表空间

  1. select t.tablespace_name, t.file_name, t.bytes / 1024 / 1024
  2. from dba_temp_files t;

剩余表空间

  1. select t.tablespace_name, round(sum(t.bytes / 1024 / 1024))
  2. from dba_free_space t
  3. group by t.tablespace_name;

表空间占比

  1. select
  2. dbf.tablespace_name,
  3. dbf.totalspace "总量(M)",
  4. dbf.totalblocks "总块数",
  5. dfs.freespace "剩余总量",
  6. dfs.freeblocks "剩余块数",
  7. (dfs.freespace / dbf.totalspace) * 100 "空闲比例"
  8. from
  9. (
  10. select t.tablespace_name,
  11. sum(t.bytes) / 1024 / 1024 totalspace,
  12. sum(t.blocks) totalblocks
  13. from dba_data_files t
  14. group by t.tablespace_name
  15. ) dbf,
  16. (
  17. select tt.tablespace_name,
  18. sum(tt.bytes) / 1024 / 1024 freespace,
  19. sum(tt.blocks) freeblocks
  20. from dba_free_space tt
  21. group by tt.tablespace_name
  22. ) dfs
  23. where
  24. trim(dbf.tablespace_name) = trim(dfs.tablespace_name)
  25. and
  26. dbf.tablespace_name
  27. in
  28. (
  29. select tablespace_name from user_tablespaces
  30. );

数据表占比

select t.owner, t.segment_name,
t.bytes / 1024 / 1024 used_space,
t.bytes / 1024 /1024 / b.table_space
from dba_segments t,
(
select t.tablespace_name,
round(sum(b.bytes / 1024 / 1024)) table_space
from dba_tablespaces t, dba_data_files b
where t.tablespace_name = b.tablespace_name
group by t.tablespace_name
) b
where t.tablespace_name = b.tablespace_name
and t.segment_type = 'talbe'
and t.tablespace_name = 'users'
order by 3 desc;