1. 程式人生 > >Oracle 查詢表空間及某個表的大小

Oracle 查詢表空間及某個表的大小

1、查詢某個表的大小 (需更改“你要查詢的使用者”)

--注,僅表資料的大小,不含索引、分割槽、LOB型別

select Segment_Name "表名",sum(bytes)/1024/1024 "表大小(M)" 
From User_Extents 
Group By Segment_Name 
having Segment_Name='你要查詢的使用者'; 
--注,僅表資料的大小,不含索引、分割槽、LOB型別

2、檢視某個使用者下各個表所佔的空間(需更改“你要查詢的使用者”)

select OWNER "使用者名稱", t.segment_name "表名", t.segment_type "表型別", sum(t.bytes / 1024 / 1024) "表大小M"
from dba_segments t
where t.owner = '你要查詢的使用者'
and t.segment_type='TABLE'
group by OWNER, t.segment_name, t.segment_type
order by "表大小M" desc;

3、檢視當前資料庫所有使用者下 所有表所佔的空間

 SELECT OWNER as "使用者名稱", sum(BYTES) / 1024 / 1024 as "所有表的大小(MB)"
  FROM DBA_SEGMENTS
 WHERE SEGMENT_NAME in (select t2.OBJECT_NAME
                          from dba_objects t2
                         where t2.OBJECT_TYPE = 'TABLE')
 group by OWNER order by 2 desc;

4、查詢某使用者下所有表的記錄總數(需更改“你要查詢的使用者”)

SELECT SUM(num_rows) "記錄總條數" FROM SYS.ALL_TABLES T WHERE T.OWNER = '你要查詢的使用者';

5、檢視某使用者下所有表的各自的記錄條數:

SELECT T.TABLE_NAME "表名",T.NUM_ROWS "記錄條數" FROM USER_TABLES T

6、檢視當前使用者下所有表的表名所屬表空間:

select table_name "表名",tablespace_name "所屬表空間" from user_tables;

7、檢視當前使用者下所有表空間的使用情況:

SELECT a.tablespace_name "表空間名", 
total "表空間大小", 
free "表空間剩餘大小", 
(total - free) "表空間使用大小", 
total / (1024 * 1024 * 1024) "表空間大小(G)", 
free / (1024 * 1024 * 1024) "表空間剩餘大小(G)", 
(total - free) / (1024 * 1024 * 1024) "表空間使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (SELECT tablespace_name, SUM(bytes) free 
FROM dba_free_space 
GROUP BY tablespace_name) a, 
(SELECT tablespace_name, SUM(bytes) total 
FROM dba_data_files 
GROUP BY tablespace_name) b 
WHERE a.tablespace_name = b.tablespace_name