오라클 데이터베이스를 설계하거나 운영할 때 가장 중요한 개념 중 하나는 저장 구조(Storage Architecture) 입니다. 특히 Tablespace, Table, Index는 데이터가 실제로 저장되고 검색되는 구조를 이해하는 핵심 요소입니다.
많은 DBA와 개발자들이 다음과 같은 질문을 자주 합니다.
- 테이블스페이스란 무엇인가
- 테이블과 인덱스는 어떤 관계인가
- 왜 데이터와 인덱스를 분리 저장해야 하는가
- 오라클 저장 구조는 어떤 계층으로 구성되는가
이 글에서는 Oracle Tablespace, Table, Index의 정의와 구조, 저장 계층, 성능 최적화 전략을 중심으로 자세히 설명합니다. 또한 실제 운영 환경에서 사용하는 SQL 예제와 설계 전략도 함께 정리했습니다.
1. Oracle Tablespace란 무엇인가



오라클 데이터베이스는 데이터를 바로 파일에 저장하지 않고 논리 구조와 물리 구조를 분리하여 관리합니다.
Tablespace는 다음과 같은 특징을 가지고 있습니다.
Tablespace 주요 특징
- 하나 이상의 Datafile(데이터 파일) 로 구성
- 데이터베이스 객체 저장 공간
- 데이터 관리 단위
- 논리적 저장 구조
즉, 테이블스페이스는 실제 데이터를 저장하는 물리 파일(Datafile)을 논리적으로 묶는 역할을 합니다.
대표적인 기본 테이블스페이스 예시
| Tablespace | 용도 |
| SYSTEM | 데이터베이스 메타데이터 |
| SYSAUX | 보조 시스템 데이터 |
| USERS | 사용자 데이터 |
📚 참고
https://docs.oracle.com/en/database/oracle/oracle-database/
2. Oracle Table(테이블)이란 무엇인가



테이블은 다음과 같은 구조로 데이터를 저장합니다.
- Row (행)
- Column (열)
예시
| ID | NAME | AGE |
| 1 | Kim | 30 |
| 2 | Lee | 25 |
이러한 데이터는 테이블 세그먼트(Table Segment) 형태로 테이블스페이스 안에 저장됩니다.
테이블의 주요 특징
- 데이터 저장 구조
- Row 단위 저장
- Column 기반 데이터 모델
오라클에서는 테이블 생성 시 저장될 테이블스페이스를 지정할 수 있습니다.
예시 SQL
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는 데이터가 실제로 저장된 위치를 가리킵니다.
즉 검색 과정은 다음과 같습니다.
→ ROWID 확인
→ 실제 데이터 접근
인덱스의 주요 특징
| 특징 | 설명 |
| 검색 속도 향상 | 빠른 데이터 조회 |
| 정렬 구조 | 키 값 기준 정렬 |
| 별도 저장 | 테이블과 다른 공간 |
인덱스 생성 예시
ON employees(name)
TABLESPACE idx_ts;
📚 참고
https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/
4. Oracle 저장 구조 계층 (Storage Hierarchy)



오라클 데이터베이스의 저장 구조는 다음과 같은 계층 구조로 이루어집니다.
Oracle Storage Hierarchy
↓
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. 테이블과 인덱스 테이블스페이스 분리 이유



이유 1: I/O 분산
테이블과 인덱스를 다른 디스크에 저장하면
- 디스크 I/O 병목 감소
- 성능 향상
이유 2: 관리 편의성
분리하면 다음 관리가 쉬워집니다.
- 백업
- 복구
- 공간 관리
이유 3: 성능 최적화
특히 대형 시스템에서는
- 데이터 테이블스페이스
- 인덱스 테이블스페이스
를 분리하는 것이 일반적인 설계 방식입니다.
6. Oracle 주요 SQL 예제
Tablespace 생성
DATAFILE '/u01/oradata/ts_data01.dbf'
SIZE 100M;
Table 생성
emp_id NUMBER,
name VARCHAR2(50)
)
TABLESPACE ts_data;
Index 생성
ON employees(name)
TABLESPACE ts_index;
이와 같은 방식으로 데이터와 인덱스를 분리 저장할 수 있습니다.
7. Oracle 저장 구조 관계 정리
Oracle 저장 구조 관계는 다음과 같이 정리할 수 있습니다.
↓
Tablespace
↓
Segment
↓
Extent
↓
Data Block
그리고 객체 관계는 다음과 같습니다.
├ 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/
'정 보 교 환' 카테고리의 다른 글
| CA/B vs CA 완벽 정리 (2026 최신) (0) | 2026.05.06 |
|---|---|
| 🔐 SSL/TLS 완벽 가이드 (2026 최신) (0) | 2026.05.06 |
| GNU GPL 라이선스 완전 정리 – GNU, FSF, GPL, Copyleft의 의미와 오픈소스 철학 (0) | 2026.03.12 |
| AI PC 시대 개막 – NPU CPU 경쟁 (Intel vs AMD vs Qualcomm) (0) | 2026.03.12 |
| Windows Server란 무엇인가? (0) | 2026.03.11 |