Programming/Oracle

Oracle TABLESPACE란? 테이블스페이스 개념 정리

Jan92 2024. 11. 17. 13:56
반응형

(oracle) TABLESPACE란? 테이블스페이스 개념 정리

oracle tablespace

해당 포스팅은 Oracle 데이터베이스의 'TABLESPACE' 개념 및 종류에 대해 정리한 내용입니다.

이론적 내용이기 때문에 테이블스페이스 생성, 조회, 삭제 등의 쿼리에 대한 내용은 빠져있다는 점 참고 부탁드리며, 이후 추가로 정리하여 포스팅하도록 하겠습니다.

 


TABLESPACE란?

Oracle Logical and Physical Storage

(이미지 출처 - https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/logical-storage-structures.html)

 

오라클 데이터베이스에서 관리하는 데이터는 실제로 '.dbf' 확장자를 가진 데이터 파일로 저장되며, 이러한 파일은 데이터가 저장되는 물리적 공간으로 볼 수 있는데요.

테이블스페이스(tablespace)란 데이터가 저장되는 논리적인 공간으로 오라클 데이터베이스의 저장 단위 중 최상위 개념의 데이터 공간입니다.

 

하나의 테이블스페이스는 하나 이상의 데이터 파일로 구성되는데요.

업무 단위나 사용 용도에 따라 하나의 데이터베이스 안에서 여러 개의 테이블스페이스를 분리할 수 있으며, 테이블스페이스 분리는 관리적 측면의 이점과 더불어 성능 최적화에도 영향을 줄 수 있습니다.

 

* 오라클에서 테이블을 생성할 때는 테이블이 저장될 공간인 '테이블스페이스'를 먼저 만들고, 해당 공간에 테이블을 생성해야 하는데요.

별도의 설정을 하지 않는 경우 default tablespace는 'USERS'로 설정됩니다.

 

 


TABLESPACE 구조

Logical Storage Hierarchy

(이미지 출처 - https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/logical-storage-structures.html)

 

오라클의 논리적 저장 계층은 'Data Blocks' -> 'Extents' -> 'Segments' -> 'Tablespace' 단계로 이루어져 있으며, 각 계층에 대한 세부 내용은 다음과 같습니다.

 

 

- 데이터 블록(Data Blocks)

데이터 블록은 오라클 데이터베이스에서 '가장 작은 논리적 데이터 저장 단위'이면서 '가장 기본적인 단위'입니다.

하나 이상의 OS Block(물리적 저장 단위)으로 구성되어 있으며, OS Block Size를 고려하여 데이터 블록의 크기를 지정할 수 있습니다.

(2KB, 4KB, 8KB, 16KB, 32KB의 Block Size를 사용할 수 있습니다.)

 

 

- 익스텐트(Extents)

익스텐트는 연속된 데이터 블록들(Data Blocks)의 집합입니다.

이 연속된 블록들은 같은 테이블스페이스 내에서 할당되며, 데이터가 저장될 공간을 제공하는데요.

데이터가 증가함에 따라 더 많은 익스텐트가 할당되어 상위 계층인 세그먼트의 크기가 확장됩니다.

(익스텐트의 크기는 일반적으로 고정되어 있으며, 자동 할당 기능을 통해 세그먼트가 커짐에 따라 새로운 익스텐트가 추가됩니다.)

 

 

- 세그먼트(Segments)

세그먼트는 하나 이상의 익스텐트(Extents)로 구성되어 있는데요.

세그먼트의 종류로는 테이블 데이터를 저장하는 '테이블 세그먼트', 인덱스를 저장하는 '인덱스 세그먼트', LOB(Large Object) 데이터를 저장하는 'LOB 세그먼트', 트랜잭션의 롤백을 위한 'UNDO 세그먼트'가 있습니다.

 

하나의 테이블을 생성한다는 것은 하나의 테이블 세그먼트를 만드는 것과 동일하며, 각각의 인덱스 역시 별도의 세그먼트를 가진다는 특징이 있습니다.

 

 


테이블스페이스 종류 및 특징

테이블스페이스는 크게 핵심 시스템 정보와 메타데이터를 저장하는 '시스템(SYSTEM) 테이블스페이스'와 이외의 모든 테이블스페이스를 포함하는 '비시스템(NON-SYSTEM) 테이블스페이스'로 나뉘는데요.

 

시스템 테이블스페이스에는 'SYSTEM TABLESPACE', 'SYSAUX TABLESPACE'가 있으며, 비시스템 테이블스페이스에는 'UNDO TABLESPACE', 'TEMPORARY TABLESPACE' 등이 있습니다.

 

 

- SYSTEM TABLESPACE

데이터베이스의 시스템 정보와 데이터 사전(Data Dictionary Table)이 저장되는 공간으로 데이터베이스가 처음 생성될 때 기본적으로 생성됩니다.

데이터베이스의 기본적인 작동에 필요한 시스템 객체들이 저장되어 있는 가장 중요한 테이블스페이스로 삭제하거나 이동할 수 없으며, 해당 테이블스페이스가 없거나 문제가 생기는 경우 데이터베이스가 정상적으로 동작하지 않습니다.

 

 

- SYSAUX TABLESPACE

SYSTEM TABLESPACE를 보조하는 역할을 하며 Oracle 10g 버전부터 도입되었습니다.

기존에 SYSTEM TABLESPACE에 저장되던 Oracle feature들이 해당 테이블스페이스에 저장되면서 SYSTEM TABLESPACE의 부하를 줄여 전체적인 데이터베이스의 성능을 향상시킵니다.

 

 

- UNDO TABLESPACE

'Transaction Rollback' 및 'Read Consistency(읽기 일관성)', 'Transaction Recovery'를 위해 사용되는 테이블스페이스입니다.

트랜잭션이 진행될 때 발생한 변경 사항을 추적하고, DML(Data Manipulation Language) 수행 시 롤백 작업을 위해 필요한 원본 데이터(undo data)를 저장합니다.

CR 작업을 통해 트랜잭션이 끝나지 않은 데이터는 변경 전의 데이터를 보여줍니다.

 

 

- TEMPORARY TABLESPACE

이름에서 알 수 있는 것처럼 임시 데이터를 저장하는 데 사용되는 공간입니다.

데이터베이스가 재실행되면 해당 테이블스페이스에 저장된 데이터가 초기화된다는 특징이 있습니다.

 

order by 또는 group by 등의 정렬 작업이 수행될 때 PGA 공간이 부족한 경우 해당 테이블스페이스를 사용하게 됩니다.

하나의 인스턴스(오라클 서버)에 여러 개의 TEMPORARY TABLESPACE를 만들 수 있기 때문에 사용자 별로 하나씩 할당해 주는 것이 좋습니다.

(정렬 외에도 해시 조인이나 일시적인 중간 결과물 등을 처리할 때 임시 공간으로 사용됩니다.)

 

반응형