정 보 교 환

Oracle 테이블스페이스, 테이블, 인덱스 구조 완전 정리 – Tablespace / Table / Index 관계와 설계 전략

sageput 2026. 3. 13. 20:52
반응형

오라클 데이터베이스를 설계하거나 운영할 가장 중요한 개념 하나는 저장 구조(Storage Architecture) 입니다. 특히 Tablespace, Table, Index데이터가 실제로 저장되고 검색되는 구조를 이해하는 핵심 요소입니다.

많은 DBA개발자들이 다음과 같은 질문을 자주 합니다.

  • 테이블스페이스란 무엇인가
  • 테이블과 인덱스는 어떤 관계인가
  • 데이터와 인덱스를 분리 저장해야 하는가
  • 오라클 저장 구조는 어떤 계층으로 구성되는가

글에서는 Oracle Tablespace, Table, Index정의와 구조, 저장 계층, 성능 최적화 전략중심으로 자세히 설명합니다. 또한 실제 운영 환경에서 사용하는 SQL 예제와 설계 전략함께 정리했습니다.


1. Oracle Tablespace무엇인가

   "Tablespace(테이블스페이스)"오라클 데이터베이스에서 데이터가 저장되는 최상위 논리적 저장 공간(Logical Storage Structure) 입니다.

   오라클 데이터베이스는 데이터를 바로 파일에 저장하지 않고 논리 구조와 물리 구조를 분리하여 관리합니다.

Tablespace다음과 같은 특징을 가지고 있습니다.

Tablespace 주요 특징

  • 하나 이상의 Datafile(데이터 파일) 구성
  • 데이터베이스 객체 저장 공간
  • 데이터 관리 단위
  • 논리적 저장 구조

즉, 테이블스페이스는 실제 데이터를 저장하는 물리 파일(Datafile)논리적으로 묶는 역할합니다.

대표적인 기본 테이블스페이스 예시

Tablespace 용도
SYSTEM 데이터베이스 메타데이터
SYSAUX 보조 시스템 데이터
USERS 사용자 데이터

📚 참고
https://docs.oracle.com/en/database/oracle/oracle-database/


2. Oracle Table(테이블)이란 무엇인가

   Table(테이블)"데이터베이스에서 데이터를 저장하는 기본 구조입니다.

테이블은 다음과 같은 구조로 데이터를 저장합니다.

  • Row (행)
  • Column (열)

예시

ID NAME AGE
1 Kim 30
2 Lee 25

이러한 데이터는 테이블 세그먼트(Table Segment) 형태로 테이블스페이스 안에 저장됩니다.

테이블의 주요 특징

  • 데이터 저장 구조
  • Row 단위 저장
  • Column 기반 데이터 모델

오라클에서는 테이블 생성 저장될 테이블스페이스를 지정할 있습니다.

예시 SQL

CREATE TABLE employees (
id NUMBER,
name VARCHAR2(50),
salary NUMBER
) TABLESPACE users;
 

📚 참고
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/CREATE-TABLE.html


3. Oracle Index무엇인가

 

   "Index(인덱스)"테이블의 데이터를 빠르게 검색하기 위해 사용하는 데이터 구조입니다.

오라클 인덱스는 일반적으로 B-tree 구조사용합니다.

인덱스에는 다음 정보가 저장됩니다.

  • 컬럼
  • ROWID (위치 정보)

ROWID데이터가 실제로 저장된 위치를 가리킵니다.

검색 과정은 다음과 같습니다.

 
Index 검색
→ ROWID 확인
→ 실제 데이터 접근
 

인덱스의 주요 특징

특징 설명
검색 속도 향상 빠른 데이터 조회
정렬 구조 기준 정렬
별도 저장 테이블과 다른 공간

인덱스 생성 예시

 
CREATE INDEX idx_emp_name
ON employees(name)
TABLESPACE idx_ts;
 

📚 참고
https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/


4. Oracle 저장 구조 계층 (Storage Hierarchy)

 

   오라클 데이터베이스의 저장 구조는 다음과 같은 계층 구조이루어집니다.

Oracle Storage Hierarchy

 
Tablespace

Segment

Extent

Data Block
 

계층의 역할

계층 설명
Tablespace 최상위 논리 저장 공간
Segment 객체 저장 공간
Extent 연속된 데이터 블록 묶음
Block 최소 저장 단위

Segment 종류

오라클에서는 여러 종류의 세그먼트가 존재합니다.

Segment 설명
Table Segment 테이블 데이터
Index Segment 인덱스
Undo Segment 트랜잭션 롤백

테이블과 인덱스는 각각 독립적인 세그먼트로 관리됩니다.

 

📚 참고
https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/


5. 테이블과 인덱스 테이블스페이스 분리 이유

   DBA들이 권장하는 설계 방법 하나는 테이블 데이터와 인덱스를 서로 다른 테이블스페이스에 저장하는 것입니다.

이유 1: I/O 분산

테이블과 인덱스를 다른 디스크에 저장하면

  • 디스크 I/O 병목 감소
  • 성능 향상

이유 2: 관리 편의성

분리하면 다음 관리가 쉬워집니다.

  • 백업
  • 복구
  • 공간 관리

이유 3: 성능 최적화

특히 대형 시스템에서는

  • 데이터 테이블스페이스
  • 인덱스 테이블스페이스

분리하는 것이 일반적인 설계 방식입니다.


6. Oracle 주요 SQL 예제

Tablespace 생성

 
CREATE TABLESPACE ts_data
DATAFILE '/u01/oradata/ts_data01.dbf'
SIZE 100M;
 

Table 생성

 
CREATE TABLE employees (
emp_id NUMBER,
name VARCHAR2(50)
)
TABLESPACE ts_data;
 

Index 생성

 
CREATE INDEX idx_emp_name
ON employees(name)
TABLESPACE ts_index;
 

이와 같은 방식으로 데이터와 인덱스를 분리 저장있습니다.


7. Oracle 저장 구조 관계 정리

   Oracle 저장 구조 관계는 다음과 같이 정리할 있습니다.

 
Database

Tablespace

Segment

Extent

Data Block
 

그리고 객체 관계는 다음과 같습니다.

 
Tablespace
├ Table Segment
└ Index Segment
 

테이블과 인덱스는 같은 테이블스페이스에 존재할 수도 있고, 다른 테이블스페이스에 존재할 수도 있습니다.


결론

   Oracle 데이터베이스 저장 구조를 이해하려면 다음 가지 개념을 정확히 이해해야 합니다.


개념 설명
Tablespace 최상위 논리 저장 공간
Table 데이터 저장 구조
Index 검색 성능 향상 구조
Segment 객체 저장 단위

특히 대규모 데이터베이스 환경에서는 다음 설계 전략이 중요합니다.

  • 데이터와 인덱스 분리 저장
  • I/O 분산
  • 효율적인 Tablespace 설계

이러한 구조를 이해하면 Oracle 데이터베이스 성능 튜닝과 저장 구조 설계에 도움이 됩니다.


참고 자료 (공식 문서)

Oracle Database Documentation
https://docs.oracle.com/en/database/oracle/oracle-database/

Oracle CREATE TABLE 문서
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/CREATE-TABLE.html

Oracle Index 구조
https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/

Oracle Storage Architecture
https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/

반응형