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;
下一篇: php没有办法将数据交付到数据库