--1.查看每个表空间的大小 SELECT TABLESPACE_NAME, SUM( BYTES )/ 1024 / 1024 || ' MB' FROM DBA_SEGMENTS GROUP BY TABLESPACE_NAME; --2.查询表分配的物理空间数量 SELECT SEGMENT_NAME, SUM( BYTES )/ 1024 / 1024 分配空间MB FROM USER_EXTENTS GROUP BY SEGMENT_NAME ORDER BY 分配空间MB DESC; --3.查询实际使用的空间数量 SELECT TABLE_NAME 表名, NUM_ROWS 数据量, AVG_ROW_LEN 平均每条大小, ( NUM_ROWS * AVG_ROW_LEN / 1024 / 1024 ) 占用空间MB FROM USER_TABLES ORDER BY 占用空间MB DESC; --4.查看剩余表空间大小 SELECT TABLESPACE_NAME 表空间, SUM( BLOCKS * 8192 / 1000000 ) 剩余空间M FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME; --5.检查系统中所有表空间总体空间 SELECT B.NAME, SUM( A.BYTES / 1000000 )总空间 FROM V$DATAFILE A, V$TABLESPACE B WHERE A.TS# = B.TS# GROUP BY B.NAME; --6.查看表空间利用率 SELECT A.A1 表空间名称, C.C2 类型, C.C3 区管理, B.B2 / 1024 / 1024 表空间大小M, ( B.B2 - A.A2 )/ 1024 / 1024 已使用M, SUBSTR(( B.B2 - A.A2 )/ B.B2 * 100,1,5)|| '%' 利用率 FROM (select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group by tablespace_name) a, (select tablespace_name b1,sum(bytes) b2 from dba_data_files group by tablespace_name) b, (select tablespace_name c1,contents c2,extent_management c3 from dba_tablespaces) c WHERE A.A1 = B.B1 AND C.C1 = B.B1; --7.数据文件大小及使用率 SELECT B.FILE_NAME 物理文件名, B.TABLESPACE_NAME 表空间, B.BYTES / 1024 / 1024 大小M, ( B.BYTES - SUM( NVL(A.BYTES,0)))/ 1024 / 1024 已使用M, SUBSTR(( B.BYTES - SUM( NVL(A.BYTES,0)))/( B.BYTES )* 100,1,5)|| '%' 利用率 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group BY B.TABLESPACE_NAME,B.FILE_NAME,B.BYTES ORDER BY B.TABLESPACE_NAME; --8.查询oracle表空间的使用情况 select b.file_id 文件ID, b.tablespace_name 表空间, b.file_name 物理文件名, b.bytes 总字节数, (b.bytes-sum(nvl(a.bytes,0))) 已使用, sum(nvl(a.bytes,0)) 剩余, sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes order by b.tablespace_name --9.查看SYS_LOB*文件属于哪个表 SELECT B.TABLE_NAME, B.COLUMN_NAME, A.SEGMENT_NAME, a.SEGMENT_TYPE, ROUND(SUM(A.BYTES / 1024 / 1024 / 1024), 2) G FROM DBA_SEGMENTS A LEFT JOIN DBA_LOBS B ON A.OWNER = B.OWNER AND A.SEGMENT_NAME = B.SEGMENT_NAME WHERE B.SEGMENT_NAME = 'SYS_LOB0021914268C00014$$' GROUP BY B.TABLE_NAME, B.COLUMN_NAME, A.SEGMENT_NAME,a.SEGMENT_TYPE;