
Oracle Database는 데이터를 효율적으로 저장하고 빠르게 접근하기 위한 다양한 구조를 제공합니다. 그중 클러스터(Cluster)는 공통 컬럼을 기준으로 여러 테이블의 데이터를 물리적으로 같은 블록에 저장하여 I/O 효율을 높이는 고급 기능입니다. 이러한 클러스터의 정의, 속성, 저장 매개변수를 관리하기 위한 핵심 데이터 딕셔너리 뷰가 바로 DBA_CLUSTERS입니다. 이 글에서는 해당 뷰의 구조, 주요 컬럼, 활용법, 그리고 클러스터를 이용한 실무 성능 최적화 기법을 전문가 관점에서 자세히 다룹니다.
1. DBA_CLUSTERS란?
DBA_CLUSTERS는 데이터베이스 내 정의된 모든 클러스터(Cluster) 객체의 정보를 제공하는 Oracle 딕셔너리 뷰입니다. 이 뷰는 클러스터의 이름, 소유자, 인덱스 방식, 저장 파라미터, 공간 관리 옵션 등 다양한 정보를 포함하고 있어, DBA가 클러스터 구조를 파악하고 성능 및 저장 효율성을 분석할 때 필수적으로 사용됩니다. Oracle 클러스터는 데이터 접근 패턴이 특정 조인(Join) 조건을 자주 반복하는 테이블 집합에 매우 효과적이며, 특히 OLTP 환경에서 공통 키 값을 기준으로 자주 함께 조회되는 데이터를 효율적으로 관리할 수 있도록 설계되었습니다.
2. DBA_CLUSTERS 주요 컬럼 구조
| 컬럼명 | 데이터 타입 | 설명 |
|---|---|---|
| OWNER | VARCHAR2(30) | 클러스터를 소유한 스키마 이름 |
| CLUSTER_NAME | VARCHAR2(30) | 클러스터 이름 |
| TABLESPACE_NAME | VARCHAR2(30) | 클러스터가 속한 테이블스페이스 이름 |
| CLUSTER_TYPE | VARCHAR2(9) | 클러스터 유형 (INDEX, HASH) |
| KEY_SIZE | NUMBER | 클러스터 키의 평균 크기 (바이트 단위) |
| BLOCKS | NUMBER | 클러스터가 차지하는 데이터 블록 수 |
| AVG_BLOCKS_PER_KEY | NUMBER | 키당 평균 블록 수 (데이터 밀집도 측정용) |
| AVG_BLOCKS_PER_KEY_LAST_ANALYZED | DATE | 클러스터 통계가 마지막으로 수집된 날짜 |
| HASHKEYS | NUMBER | 해시 클러스터의 해시 키 개수 (HASH TYPE일 경우) |
| PCT_FREE | NUMBER | 블록 내 여유 공간 비율 (업데이트 고려용) |
| PCT_USED | NUMBER | 블록 내 사용 공간 비율 (공간 활용률 분석용) |
| CLUSTER_SIZE | NUMBER | 클러스터당 예상 크기 (메모리 및 저장공간 관리용) |
이 중 CLUSTER_TYPE은 클러스터가 인덱스 클러스터(Index Cluster)인지, 혹은 해시 클러스터(Hash Cluster)인지를 구분하는 가장 중요한 컬럼입니다. 각 유형에 따라 데이터 접근 방식과 성능 특성이 크게 달라집니다.
3. 클러스터의 두 가지 유형 비교
| 구분 | 인덱스 클러스터 (INDEX) | 해시 클러스터 (HASH) |
|---|---|---|
| 데이터 접근 방식 | 클러스터 키를 인덱스를 통해 탐색 | 해시 함수를 이용한 직접 접근 |
| 장점 | 조인 성능 향상, I/O 감소 | 키 기반 조회 속도 매우 빠름 |
| 단점 | 인덱스 유지관리 비용 발생 | 해시 충돌 시 성능 저하 가능 |
| 적합한 상황 | 다중 테이블 간 공통 컬럼 조인 | 단일 테이블의 특정 키 기반 조회 |
| 설정 방법 | CREATE CLUSTER ... INDEX 명시 | CREATE CLUSTER ... HASHKEYS 지정 |
DBA_CLUSTERS 뷰는 이러한 클러스터 유형을 한눈에 파악할 수 있는 정보 제공원으로, DB 설계자가 어떤 데이터 접근 전략을 사용하고 있는지를 직접 분석할 수 있게 해줍니다.
4. DBA_CLUSTERS 조회 예제
SELECT OWNER, CLUSTER_NAME, CLUSTER_TYPE, TABLESPACE_NAME, KEY_SIZE
FROM DBA_CLUSTERS
ORDER BY OWNER, CLUSTER_NAME;
이 쿼리를 통해 데이터베이스 내 클러스터 목록과 유형, 키 크기를 확인할 수 있습니다. 특히 해시 클러스터의 경우 HASHKEYS 값을 함께 확인하면 해시 함수의 분포 상태를 점검할 수 있습니다.
5. 클러스터 구조의 실제 활용 예시
① 인덱스 클러스터 생성 예시
CREATE CLUSTER emp_dept_cluster (deptno NUMBER(4))
SIZE 512
TABLESPACE users;
CREATE INDEX idx_emp_dept_cluster ON CLUSTER emp_dept_cluster;
CREATE TABLE employees (
empno NUMBER(4),
ename VARCHAR2(20),
deptno NUMBER(4)
) CLUSTER emp_dept_cluster (deptno);
CREATE TABLE departments (
deptno NUMBER(4),
dname VARCHAR2(30)
) CLUSTER emp_dept_cluster (deptno);
이 구조에서는 EMPLOYEES와 DEPARTMENTS가 동일한 DEPTNO 값을 기준으로 같은 데이터 블록에 저장됩니다. 즉, 두 테이블을 조인할 때 디스크 I/O가 최소화되어 빠른 조회가 가능합니다.
② 해시 클러스터 생성 예시
CREATE CLUSTER hash_emp (empno NUMBER(6))
HASHKEYS 200
SIZE 512;
CREATE TABLE employees (
empno NUMBER(6),
ename VARCHAR2(30),
job VARCHAR2(20)
) CLUSTER hash_emp (empno);
해시 클러스터는 해시 함수를 통해 데이터 위치를 직접 계산하므로, 인덱스 탐색 과정을 생략하고 즉시 접근이 가능합니다. 이는 대규모 조회 작업에서 성능 이점을 제공합니다.
6. DBA_CLUSTERS 활용 시 얻을 수 있는 관리 이점
- 성능 분석: 클러스터 유형별 I/O 효율성 및 공간 활용률 점검
- 공간 관리: PCT_FREE, BLOCKS, CLUSTER_SIZE를 통한 테이블스페이스 조정
- 튜닝 지표 확보: KEY_SIZE, AVG_BLOCKS_PER_KEY 등을 활용한 밀집도 분석
- 클러스터 테이블 관계 파악: 동일한 클러스터에 속한 테이블 매핑 확인
7. DBA_CLUSTERS와 관련된 주요 뷰 비교
| 뷰 이름 | 설명 | 주요 활용 목적 | 비교 요약 |
|---|---|---|---|
| DBA_CLUSTERS | 클러스터의 정의 및 속성 정보 | 클러스터 구조 분석 | 핵심 정보 중심 |
| DBA_CLUSTER_HASH_EXPRESSIONS | 해시 클러스터의 해시 키 정의 | 해시 분포 및 키 성능 분석 | HASH TYPE용 세부 정보 |
| DBA_CLUSTER_COLUMNS | 클러스터 키 컬럼 정보 | 클러스터 키 구조 확인 | 키 기반 매핑 분석 |
| DBA_TABLES | 테이블 단위의 저장 정보 | 테이블 수준 공간 관리 | 개별 객체 분석용 |
8. 클러스터 성능 최적화 전략
① 클러스터 크기와 해시키 조정
클러스터를 설계할 때, SIZE와 HASHKEYS 값을 업무 패턴에 맞게 조정하는 것이 중요합니다. 값이 너무 작으면 충돌이 빈번해지고, 너무 크면 공간 낭비가 발생합니다. DBA_CLUSTERS의 AVG_BLOCKS_PER_KEY 값을 참고하여 균형을 맞추는 것이 좋습니다.
② 정기적인 통계 수집
DBMS_STATS.GATHER_CLUSTER_STATS 프로시저를 이용해 통계를 주기적으로 갱신하면, 옵티마이저가 최신 데이터 분포를 반영해 효율적인 실행 계획을 생성할 수 있습니다.
③ 클러스터 재구성(리빌드)
오래된 클러스터는 블록 단편화로 인해 성능이 저하될 수 있습니다. 이 경우 ALTER CLUSTER ... MOVE 명령을 통해 클러스터를 재배치(Rebuild)하면 공간 효율이 향상됩니다.
9. DBA_CLUSTERS 관리 시 주의사항
- 해시 클러스터는 DML 변경이 많은 환경에서는 비효율적일 수 있음
- 클러스터 구조 변경 시 관련 테이블 재구성이 필요
- PCT_FREE/PCT_USED 비율 조정은 데이터 패턴 기반으로 설정
- 클러스터가 테이블스페이스 공간을 독점하지 않도록 모니터링
10. 결론
DBA_CLUSTERS는 Oracle 데이터베이스의 물리적 구조와 성능 효율을 이해하는 데 필수적인 뷰입니다. 이를 통해 DBA는 데이터의 저장 방식, 블록 밀집도, 해시 충돌 가능성 등을 체계적으로 관리할 수 있습니다. 특히 클러스터 구조는 데이터 접근 패턴이 명확한 환경에서 강력한 성능 향상을 가져오며, DBA_CLUSTERS는 이를 모니터링하고 최적화하기 위한 가장 신뢰할 수 있는 진단 도구입니다.
출처
- Oracle® Database Reference 19c - DBA_CLUSTERS View
- Oracle® Database Concepts Guide
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] DBA_CLU_COLUMNS 완벽 해설 : 클러스터 키 컬럼 구조와 성능 최적화의 핵심 (0) | 2025.10.13 |
|---|---|
| [ORACLE] DBA_CLUSTER_HASH_EXPRESSIONS 완벽 해설 : 해시 클러스터 구조와 해시 키 기반 성능 최적화 (0) | 2025.10.13 |
| [ORACLE] DBA_CATALOG 완벽 해설 : 오라클 객체 관리의 핵심 메타데이터 뷰 (0) | 2025.10.13 |
| [ORACLE] DBA_CACHEABLE_TABLES_BASE 완벽 해설 : 캐시 정책의 기반 구조와 성능 최적화의 핵심 (0) | 2025.10.13 |
| [ORACLE] DBA_CACHEABLE_TABLES 완벽 해설 : 캐시 가능한 테이블의 이해와 성능 최적화 전략 (0) | 2025.10.13 |