본문 바로가기
Database

오라클 테이블스페이스(Tablespace)란 무엇인가?

by 굿센스굿 2024. 12. 4.
반응형


**테이블스페이스(Tablespace)**는 오라클 데이터베이스에서 데이터를 저장하는 물리적 저장소의 논리적 단위입니다. 테이블스페이스는 데이터베이스의 데이터 파일(Data File)을 관리하며, 데이터베이스 내에서 데이터를 논리적으로 구분하고 관리할 수 있도록 설계된 핵심 개념입니다.
이 글에서는 테이블스페이스의 기본 개념, 주요 특징, 구성 요소, 종류, 관리 방법 등을 상세히 알아봅니다.


1. 테이블스페이스의 기본 개념

  • 데이터 저장소의 논리적 구조:
    • 데이터베이스는 데이터를 저장하기 위해 물리적인 데이터 파일을 사용하며, 이 데이터 파일을 논리적으로 묶어 관리하는 단위가 테이블스페이스입니다.
  • 논리적-물리적 계층 구분:
    • 테이블스페이스는 데이터베이스의 논리적 저장 단위이며, 데이터 파일은 물리적 저장 단위입니다.
    • 테이블스페이스는 하나 이상의 데이터 파일로 구성됩니다.
  • 역할:
    • 데이터를 효율적으로 저장, 관리, 분리.
    • 성능 최적화 및 디스크 공간 관리.
    • 사용자별 또는 애플리케이션별 데이터 구분.

2. 테이블스페이스의 구성 요소

  1. 데이터 파일(Data File):
    • 테이블스페이스의 실제 데이터가 저장되는 물리적인 파일입니다.
    • 데이터 파일은 운영 체제에 의해 관리되며, 파일의 크기 및 경로를 지정할 수 있습니다.
  2. 세그먼트(Segment):
    • 테이블, 인덱스, 클러스터 등 데이터베이스 객체가 저장되는 논리적 단위입니다.
  3. 익스텐트(Extent):
    • 세그먼트를 구성하는 연속적인 데이터 블록의 집합입니다.
  4. 데이터 블록(Data Block):
    • 데이터 파일의 가장 작은 논리적 저장 단위입니다.
    • 데이터 블록 크기는 데이터베이스 생성 시 설정되며, 일반적으로 8KB, 16KB 등이 사용됩니다.

3. 테이블스페이스의 주요 종류

오라클 데이터베이스는 다양한 테이블스페이스를 제공하여 데이터 관리를 최적화합니다.

  1. SYSTEM 테이블스페이스:
    • 데이터베이스 생성 시 기본적으로 생성되는 테이블스페이스.
    • 데이터 사전(Dictionary) 정보를 저장하며, 반드시 항상 온라인 상태여야 합니다.
  2. SYSAUX 테이블스페이스:
    • SYSTEM 테이블스페이스를 보조하며, 다양한 데이터베이스 구성 요소(예: AWR, OEM, ASM 관련 데이터)를 저장합니다.
  3. TEMP 테이블스페이스:
    • 임시 데이터(예: 정렬 작업, 임시 테이블 데이터)를 저장.
    • 트랜잭션이 종료되면 데이터가 삭제됩니다.
  4. UNDO 테이블스페이스:
    • 트랜잭션 롤백이나 읽기 일관성을 제공하기 위해 변경 전 데이터를 저장.
  5. 사용자 정의 테이블스페이스:
    • 사용자가 데이터를 논리적으로 구분하고 저장하기 위해 생성하는 테이블스페이스.
    • 예: USERS, DATA, INDEX 등.

4. 테이블스페이스 관리

(1) 테이블스페이스 생성
테이블스페이스는 CREATE TABLESPACE 명령으로 생성할 수 있습니다.

CREATE TABLESPACE example_ts
DATAFILE '/u01/oradata/example/example01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 1G
LOGGING
ONLINE;
  • DATAFILE: 테이블스페이스에 연결된 데이터 파일 경로와 크기를 지정.
  • AUTOEXTEND: 필요 시 데이터 파일 크기를 자동으로 증가.
  • LOGGING/NOLOGGING: 데이터 변경 시 로그 기록 여부.
  • ONLINE/OFFLINE: 테이블스페이스 상태 설정.

(2) 테이블스페이스 확인
현재 데이터베이스의 테이블스페이스 상태를 확인할 수 있습니다.

SELECT tablespace_name, status, contents, logging
FROM dba_tablespaces;

(3) 테이블스페이스 확장
테이블스페이스의 크기가 부족할 경우 데이터 파일을 확장합니다.

ALTER DATABASE DATAFILE '/u01/oradata/example/example01.dbf' RESIZE 200M;

또는 새 데이터 파일을 추가합니다.

ALTER TABLESPACE example_ts
ADD DATAFILE '/u01/oradata/example/example02.dbf' SIZE 100M;

(4) 테이블스페이스 삭제
테이블스페이스를 삭제하려면 먼저 데이터를 삭제하거나 이동해야 합니다.

DROP TABLESPACE example_ts INCLUDING CONTENTS AND DATAFILES;

5. 테이블스페이스 활용 사례

  1. 데이터 분리:
    • 대규모 애플리케이션에서 사용자 데이터를 별도 테이블스페이스에 저장하여 관리.
    • 예: 고객 데이터는 CUSTOMER_TS, 주문 데이터는 ORDER_TS에 저장.
  2. 성능 최적화:
    • 빈번한 읽기/쓰기 작업이 발생하는 데이터를 별도 테이블스페이스로 분리하여 I/O 병목 현상 최소화.
  3. 보안 및 접근 제어:
    • 민감한 데이터를 별도의 테이블스페이스에 저장하고 접근 권한 제한.
  4. 임시 작업 처리:
    • 정렬 작업이나 인덱스 생성 중 발생하는 임시 데이터를 TEMP 테이블스페이스에 저장.

6. 테이블스페이스와 스키마의 차이점

항목 테이블스페이스 스키마

정의 데이터 저장을 위한 논리적 단위 데이터베이스 객체(테이블, 뷰 등)의 논리적 그룹
역할 데이터 파일 관리 데이터베이스 사용자와 관련 객체 관리
포함 항목 데이터 파일, 세그먼트 테이블, 인덱스, 프로시저 등
범위 데이터 저장소 중심 사용자와 관련된 객체 중심

7. 결론

테이블스페이스는 오라클 데이터베이스에서 데이터를 효율적으로 저장하고 관리하는 기본 단위입니다. 테이블스페이스를 활용하면 데이터 분리, 성능 최적화, 보안 강화 등의 이점을 얻을 수 있습니다. 데이터베이스 설계와 운영 시 테이블스페이스의 개념과 활용법을 충분히 이해하고 적용하면 더 나은 데이터베이스 관리가 가능합니다.

반응형