본문 바로가기
IT/Oracle DB

[Oracle] TableSpace 용량 확인 및 확장 가이드

by 직장인W군 2022. 1. 22.
728x90

Oracle Database의 TableSpace 관리 中 용량 확인 및 확장하는 방법에 대해 정리하여 공유합니다.

 


 

■ TableSpace 용량 확인 (MB 단위)

SELECT A.TABLESPACE_NAME "TABLESPACE Name",
       ROUND(MAXBYTES/1048576,2) "최대용량(MB)",
       ROUND(A.BYTES_ALLOC / 1024 / 1024, 2) "할당용량(MB)",
       ROUND(NVL(B.BYTES_FREE, 0) / 1024 / 1024, 2) "여유용량(MB)",
       ROUND((A.BYTES_ALLOC - NVL(B.BYTES_FREE, 0)) / 1024 / 1024, 2) "사용량(MB)",
       ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100,2) "여유%",
       100 - ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100,2) "사용%"
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;

 

 


 

■ TableSpace 용량 확장 방법 (파일 추가)


1. 테이블스페이스 정보 확인 (이름 및 용량 등)

SELECT * FROM DBA_TABLESPACES;

 


 

2. DATA 파일 및 테이블스페이스 확인
 - 테이블스페이스 경로 및 파일명 확인 
 - 자동증가 설정 확인

SELECT * FROM DBA_DATA_FILES ORDER BY file_name;

 


 

3. TableSpace 파일 추가

- 명령어 구성

ALTER TABLESPACE 테이블스페이스명 add datafile '/경로/추가할 테이블스페이스 파일명.dbf' SIZE 용량;

 

- 예제 쿼리

-- DATA 파일 추가
ALTER TABLESPACE tbs ADD DATAFILE '/data/oracle/oradata/orcl/tbs6.dbf' SIZE 10240M;

 


 

4. TableSpace 최대용량 및 자동증가 설정

- 명령어 구성

alter database datafile '/경로/추가한 테이블스페이스 파일명.dbf' autoextend on next 자동증가용량 maxsize 최대설정용량;

- 예제 쿼리

-- DATA 파일을 가지고 속성 변경 (자동증가/Max 사이즈)
ALTER DATABASE DATAFILE '/data/oracle/oradata/orcl/tbs6.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE 10240M;

 


 

※ 테이블스페이스 용량 부족 시,
기존 TableSpace 용량을 확장하는 경우도 있지만 대용량의 Database의 경우 다수의 파일로 관리하는것이 용이합니다.

 

 


 

반응형

댓글