본문 바로가기
DATABASE/Oracle

[DBA][Oracle] 자주 쓰는 쿼리 - TableSpace 용량 및 파일 위치 확인

by DANEW 2023. 8. 8.

Intro

안녕하세요

초보 DBA 다뉴입니다.

 

데이터베이스를 관리함에 있어서 여러가지 요소가 있겠지만

그 중 저장공간과 용량에 대한 관리에 도움이 될 만한 쿼리를 하나 소개할까 합니다.

 

여러 오브젝트들은 TableSpace에 속하여, 저장공간을 차지하고 있는데요.

오늘은 이 TableSpace를 관리하기 위해 TableSpace의 저장공간의 상태를 확인하는 쿼리입니다.

한번 알아보도록 하죠.


알아두기

Tablespace (테이블 스페이스) 란?

Tablespace는 Oracle의 논리적 저장공간입니다.

Tablespace를 나눔으로써 데이터의 관리 / Table, Index 의 분리 등 여러가지 효율을 얻을 수 있습니다.

 

자세한 내용은 아래의 글을 참고해 주세요!

 

[Oracle] 저장 구조 - Tablespace, Segments, Extents, Data Block, OS Block, Data File

Intro 안녕하세요 초보 DBA 다뉴입니다. 요번에 Oracle - Tablespace 관련 업무를 하다가 Data 구조에 대해서 궁금하게 되었습니다. 그래서 이것저것 공부하고 찾아보게 되어 간략하게 기본 구조에 대해

da-new.tistory.com

간단한 쿼리 설명

오라클의 시스템 뷰를 활용하여 작성 된 쿼리입니다.

DBA_가 붙은 뷰는 DB의 모든 내용을 조회 가능한 시스템 뷰 입니다.

 

DBA_DATA_FILES

DBA_DATA_FILES DBA_DATA_FILES describes database files. Column Datatype NULL Description FILE_NAME VARCHAR2(513)   Name of the database file FILE_ID NUMBER NOT NULL File identifier number of the database file TABLESPACE_NAME VARCHAR2(30) NOT NULL Name of

docs.oracle.com

반응형
 

DBA_FREE_SPACE

DBA_FREE_SPACE DBA_FREE_SPACE describes the free extents in all tablespaces in the database. Note that if a datafile (or entire tablespace) is offline in a locally managed tablespace, you will not see any extent information. If an object has extents in an

docs.oracle.com

자세한 내용은 위의 공식 문서를 참고해주세요!


Query

Tablespace 조회 쿼리

select A.TABLESPACE_NAME as Tablespace_Name,
       A.FILE_NAME as File_Dir,
       (A.BYTES - B.FREE) as Use_Size,
       B.FREE as Free_Size,
       A.BYTES as Total_Size,
       TO_CHAR((B.FREE / A.BYTES * 100), '999.99')||'%' as Free_Per
  from (select FILE_ID,
               TABLESPACE_NAME,
               FILE_NAME,
               SUBSTR(FILE_NAME, 1, 200) as FILE_NM,
               SUM(BYTES) as BYTES
          from DBA_DATA_FILES
         group by FILE_ID, 
                  TABLESPACE_NAME, 
                  FILE_NAME, 
                  SUBSTR(FILE_NAME, 1, 200)
       ) A
  join (select TABLESPACE_NAME,
               FILE_ID,
               SUM(NVL(BYTES,0)) as FREE
          from DBA_FREE_SPACE
         group by TABLESPACE_NAME,
                  FILE_ID
       ) B
    on A.TABLESPACE_NAME = B.TABLESPACE_NAME
   and A.FILE_ID = B.FILE_ID;

컬럼 설명

  • Tablespace_Name : 테이블스페이스 명칭
  • File_Dir : 파일 위치
  • Use_Size : 사용 공간 크기
  • Free_Size : 남은 공간 크기
  • Total_Size : 총 공간 크기
  • Free_Per : 공간 사용률

Outro

오라클 테이블스페이스의 사용량과 물리적인 DataFile 위치를 확인하는 쿼리를 알아보았는데요.

데이터베이스를 관리 할 때 필수인 테이블스페이스에 기본적인 정보를 손쉽게 볼 수 있겠네요.

 

다음에 더 좋은 내용으로 찾아뵙겠습니다.

감사합니다.

반응형