데이터베이스 성능 최적화와 안정적인 운영의 출발점은 바로 **테이블스페이스(Tablespace)**를 어떻게 설계하고 관리하느냐에 달려 있습니다. 테이블스페이스는 논리적인 저장 단위로서, 용도와 관리 방식에 따라 그 특성이 명확히 구분됩니다. 오늘은 오라클 중심으로 테이블스페이스의 분류와 핵심 관리 전략, 그리고 실무에서 느낀 운영 팁을 심도 있게 살펴보겠습니다.

1. 용도에 따른 테이블스페이스 분류: 시스템과 비시스템
테이블스페이스는 크게 시스템 운영을 위한 공간과 유저 데이터를 위한 공간으로 나뉩니다.
① 시스템 테이블스페이스 (SYSTEM & SYSAUX)
-
SYSTEM 테이블스페이스: 데이터 딕셔너리 정보와 유저 오브젝트 정보를 저장하는 핵심 영역입니다. DB 생성 시 필수이며 삭제가 불가능합니다.
-
SYSAUX 테이블스페이스: 10g부터 도입된 보조 테이블스페이스입니다. 과거 SYSTEM에 집중됐던 통계 정보나 AWR(Automatic Workload Repository) 데이터를 분산 저장하여 부하를 줄여줍니다.
💡 실무 Insight: 운영 중 SYSAUX 용량이 비정상적으로 늘어난다면 AWR 보관 주기(Retention)를 체크해 보세요. 기본 설정보다 길게 잡혀 있어 불필요한 통계 데이터가 쌓이는 경우가 많습니다.
② 비시스템 테이블스페이스 (General, Temporary, Undo)
-
일반 테이블스페이스: 실제 업무 데이터와 인덱스를 저장합니다.
-
임시(Temporary) 테이블스페이스: 정렬(ORDER BY, GROUP BY) 작업 시 사용하는 공간입니다.
경험담: 대규모 인덱스 생성이나 대량 데이터 정렬 작업 시 Temp 공간 부족으로 에러가 발생하는 경우가 잦습니다. 작업 전에는 반드시 Temp 공간을 모니터링하고 필요시 임시로 파일을 추가하는 유연함이 필요합니다.
-
언두(Undo) 테이블스페이스: 롤백을 위한 이전 이미지 데이터를 저장하며, 자동 관리 모드를 위해 ‘지역 관리 방식’으로 생성하는 것이 권장됩니다.
2. 성능을 결정짓는 익스텐트(Extent) 관리 방식
데이터 저장 단위인 익스텐트를 어떻게 관리하느냐는 DB 전체 성능에 직결됩니다.
-
지역 관리(Locally Managed Tablespace, LMT): 데이터 파일 헤더의 비트맵(Bitmap)을 이용해 익스텐트 사용 여부를 자체 관리합니다. 딕셔너리 조회가 필요 없어 성능이 우수하며, 현재 오라클에서 가장 권장하는 방식입니다.
-
딕셔너리 관리(Dictionary Managed): 과거 방식으로, 익스텐트 할당 시마다 시스템 테이블스페이스의 딕셔너리를 조회하므로 부하가 발생할 수 있습니다.
3. 효율적인 세그먼트 공간 관리 (ASSM vs Manual)
-
자동 세그먼트 공간 관리(ASSM): 비트맵을 사용하여 세그먼트 내의 여유 공간을 자동으로 관리합니다.
-
수동 세그먼트 공간 관리: 프리리스트(Free List)를 통해 수동 관리하며 설정이 복잡할 수 있습니다.
4. 실무자를 위한 관리 팁 및 운영 전략
실제 데이터베이스를 운영하며 느낀 몇 가지 주의사항을 정리해 드립니다.
-
권한 관리의 엄격함: 일반 사용자가 SYSTEM 테이블스페이스를 점유하지 못하도록 유저 생성 시
QUOTA옵션을 명확히 할당해야 합니다.UNLIMITED TABLESPACE권한은 관리자 계정 외에는 신중히 부여해야 합니다. -
설정 우선순위 활용: 오라클 설정은 세그먼트 > 테이블스페이스 > DB 기본값 순으로 적용됩니다. 특정 대용량 테이블에만 별도의 스토리지 옵션이 필요하다면 세그먼트 수준에서 최적화하는 것이 효율적입니다.
-
생성 구문의 정석: 테이블스페이스 생성 시 아래와 같이 LMT와 ASSM을 명시적으로 설정하는 습관을 들이는 것이 좋습니다.
-- 실무 권장형 테이블스페이스 생성 예시
CREATE TABLESPACE TS_DATA01
DATAFILE '/u01/app/oracle/oradata/DB10G/ts_data01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL -- LMT 방식
SEGMENT SPACE MANAGEMENT AUTO; -- ASSM 방식
결국 데이터베이스 운영의 성패는 초기 설계 단계에서 테이블스페이스를 얼마나 용도별로 잘 분리했느냐에 달려 있습니다. 데이터와 인덱스 공간을 분리하고, 정렬 작업의 특성을 고려한 Temp 설계를 마쳤다면 이미 절반은 성공한 셈입니다.