欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle 相关统计

程序员文章站 2022-06-05 09:27:38
...

--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;

相关标签: oracle