반응형
**테이블스페이스(Tablespace)**는 오라클 데이터베이스에서 데이터를 저장하는 물리적 저장소의 논리적 단위입니다. 테이블스페이스는 데이터베이스의 데이터 파일(Data File)을 관리하며, 데이터베이스 내에서 데이터를 논리적으로 구분하고 관리할 수 있도록 설계된 핵심 개념입니다.
이 글에서는 테이블스페이스의 기본 개념, 주요 특징, 구성 요소, 종류, 관리 방법 등을 상세히 알아봅니다.
1. 테이블스페이스의 기본 개념
- 데이터 저장소의 논리적 구조:
- 데이터베이스는 데이터를 저장하기 위해 물리적인 데이터 파일을 사용하며, 이 데이터 파일을 논리적으로 묶어 관리하는 단위가 테이블스페이스입니다.
- 논리적-물리적 계층 구분:
- 테이블스페이스는 데이터베이스의 논리적 저장 단위이며, 데이터 파일은 물리적 저장 단위입니다.
- 테이블스페이스는 하나 이상의 데이터 파일로 구성됩니다.
- 역할:
- 데이터를 효율적으로 저장, 관리, 분리.
- 성능 최적화 및 디스크 공간 관리.
- 사용자별 또는 애플리케이션별 데이터 구분.
2. 테이블스페이스의 구성 요소
- 데이터 파일(Data File):
- 테이블스페이스의 실제 데이터가 저장되는 물리적인 파일입니다.
- 데이터 파일은 운영 체제에 의해 관리되며, 파일의 크기 및 경로를 지정할 수 있습니다.
- 세그먼트(Segment):
- 테이블, 인덱스, 클러스터 등 데이터베이스 객체가 저장되는 논리적 단위입니다.
- 익스텐트(Extent):
- 세그먼트를 구성하는 연속적인 데이터 블록의 집합입니다.
- 데이터 블록(Data Block):
- 데이터 파일의 가장 작은 논리적 저장 단위입니다.
- 데이터 블록 크기는 데이터베이스 생성 시 설정되며, 일반적으로 8KB, 16KB 등이 사용됩니다.
3. 테이블스페이스의 주요 종류
오라클 데이터베이스는 다양한 테이블스페이스를 제공하여 데이터 관리를 최적화합니다.
- SYSTEM 테이블스페이스:
- 데이터베이스 생성 시 기본적으로 생성되는 테이블스페이스.
- 데이터 사전(Dictionary) 정보를 저장하며, 반드시 항상 온라인 상태여야 합니다.
- SYSAUX 테이블스페이스:
- SYSTEM 테이블스페이스를 보조하며, 다양한 데이터베이스 구성 요소(예: AWR, OEM, ASM 관련 데이터)를 저장합니다.
- TEMP 테이블스페이스:
- 임시 데이터(예: 정렬 작업, 임시 테이블 데이터)를 저장.
- 트랜잭션이 종료되면 데이터가 삭제됩니다.
- UNDO 테이블스페이스:
- 트랜잭션 롤백이나 읽기 일관성을 제공하기 위해 변경 전 데이터를 저장.
- 사용자 정의 테이블스페이스:
- 사용자가 데이터를 논리적으로 구분하고 저장하기 위해 생성하는 테이블스페이스.
- 예: 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. 테이블스페이스 활용 사례
- 데이터 분리:
- 대규모 애플리케이션에서 사용자 데이터를 별도 테이블스페이스에 저장하여 관리.
- 예: 고객 데이터는 CUSTOMER_TS, 주문 데이터는 ORDER_TS에 저장.
- 성능 최적화:
- 빈번한 읽기/쓰기 작업이 발생하는 데이터를 별도 테이블스페이스로 분리하여 I/O 병목 현상 최소화.
- 보안 및 접근 제어:
- 민감한 데이터를 별도의 테이블스페이스에 저장하고 접근 권한 제한.
- 임시 작업 처리:
- 정렬 작업이나 인덱스 생성 중 발생하는 임시 데이터를 TEMP 테이블스페이스에 저장.
6. 테이블스페이스와 스키마의 차이점
항목 테이블스페이스 스키마
정의 | 데이터 저장을 위한 논리적 단위 | 데이터베이스 객체(테이블, 뷰 등)의 논리적 그룹 |
역할 | 데이터 파일 관리 | 데이터베이스 사용자와 관련 객체 관리 |
포함 항목 | 데이터 파일, 세그먼트 | 테이블, 인덱스, 프로시저 등 |
범위 | 데이터 저장소 중심 | 사용자와 관련된 객체 중심 |
7. 결론
테이블스페이스는 오라클 데이터베이스에서 데이터를 효율적으로 저장하고 관리하는 기본 단위입니다. 테이블스페이스를 활용하면 데이터 분리, 성능 최적화, 보안 강화 등의 이점을 얻을 수 있습니다. 데이터베이스 설계와 운영 시 테이블스페이스의 개념과 활용법을 충분히 이해하고 적용하면 더 나은 데이터베이스 관리가 가능합니다.
반응형
'Database' 카테고리의 다른 글
오라클 JSON 데이터 처리: JSON_TABLE과 JSON_VALUE (0) | 2024.12.04 |
---|---|
오라클 CLOB과 BLOB 데이터 처리 방법 (0) | 2024.12.04 |
오라클 데이터 파일과 로그 파일의 이해 (0) | 2024.12.04 |
오라클 UNDO 테이블스페이스의 역할과 관리 (0) | 2024.12.04 |
오라클 데이터베이스의 아카이브 로그 모드 이해하기 (0) | 2024.12.04 |