본문
ORACLE DB/테이블스페이스 용량확인
DB(Oracle) 2017. 9. 13. 14:32
반응형
1. DB 전체/사용한/사용가능한 용량 확인
--전체 DB 용량
select sum(bytes) from dba_data_files;
select sum(bytes)/1024/1024/1024 from dba_data_files; --GB로 표시
-- 사용한 DB 용량
select sum(bytes) from dba_segments;
select sum(bytes)/1024/1024/1024 from dba_segments; --GB로 표시
-- 사용 가능한 DB 용량
select sum(bytes) from dba_free_space;
select sum(bytes)/1024/1024/1024 from dba_free_space; --GB로 표시
2. 테이블스페이스 용량 확인
2.1 용량 확인 SQL
SELECT A.TABLESPACE_NAME,
ROUND(A.BYTES_ALLOC / 1024 / 1024, 2) CURRENT_SIZE,
ROUND(NVL(B.BYTES_FREE, 0) / 1024 / 1024, 2) FREE_SIZE,
ROUND((A.BYTES_ALLOC - NVL(B.BYTES_FREE, 0)) / 1024 / 1024, 2) USED_SIZE,
ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100,2) FREE_RATE,
100 - ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100,2) USED_RATE,
ROUND(MAXBYTES/1048576,2) MAX_SIZE
FROM (
SELECT F.TABLESPACE_NAME,
SUM(F.BYTES) BYTES_ALLOC,
SUM(DECODE(F.AUTOEXTENSIBLE, 'YES',F.MAXBYTES,'NO', F.BYTES)) MAXBYTES
FROM DBA_DATA_FILES F
GROUP BY TABLESPACE_NAME) A,
(SELECT F.TABLESPACE_NAME,
SUM(F.BYTES) BYTES_FREE
FROM DBA_FREE_SPACE F
GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME (+)
UNION
SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES_USED + BYTES_FREE) / 1048576, 2),
ROUND(SUM(BYTES_FREE) / 1048576,2),
ROUND(SUM(BYTES_USED) / 1048576,2),
ROUND((SUM(BYTES_FREE) / SUM(BYTES_USED + BYTES_FREE)) * 100,2) FREE_RATE,
100 - ROUND((SUM(BYTES_FREE) / SUM(BYTES_USED + BYTES_FREE)) * 100,2) USED_RATE,
ROUND(MAX(BYTES_USED + BYTES_FREE) / 1048576, 2)
FROM SYS.V_$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME
ORDER BY 1;
2.2 관련 테이블
a) DBA_TABLESPACES 테이블스페이스 목록
SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;
b) DBA_DATA_FILES 테이블스페이스 파일 목록
SELECT FILE_NAME, BYTES, STATUS FROM DBA_DATA_FILES;
c) DBA_FREE_SPACE 테이블스페이스 잔여 공간
SELECT TABLESPACE_NAME, BYTES, BLOCKS FROM DBA_FREE_SPACE;
💡 참고
반응형
댓글