Oracle常用统计语句

Oracle 206次浏览 本站
--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;

发表评论

电子邮件地址不会被公开。 必填项已用*标注