728x90
인덱스(Index) 클러스터 테이블(Clustered Table) 생성 과정
1) 클러스터 생성
SQL>
CREATE CLUSTER dept_emp_cluster (
dept_id NUMBER
)
TABLESPACE users
SIZE 512;
Cluster created.
※ dept_id는 클러스터 키이며, 여러 테이블이 이 키를 공유해 같은 블록에 저장됩니다.
2) 클러스터 인덱스 생성(필수)
SQL>
CREATE INDEX idx_dept_emp_cluster
ON CLUSTER dept_emp_cluster
TABLESPACE users;
Index created.
- 클러스터 키로 데이터를 찾기 위해 인덱스가 필요합니다 (Index Cluster인 경우)
- 만약 클러스터 인덱스를 생성하지 않고, 클러스터 테이블을 생성하게 되면
클러스터 테이블 사용 시 ORA-02032 에러가 발생합니다.
(ORA-02032: clustered tables cannot be used before the cluster index is built)
3) 클러스터 테이블 생성
CREATE TABLE departments (
dept_id NUMBER PRIMARY KEY,
dept_name VARCHAR2(100)
)
CLUSTER dept_emp_cluster (dept_id);
CREATE TABLE employees (
emp_id NUMBER PRIMARY KEY,
emp_name VARCHAR2(100),
dept_id NUMBER,
CONSTRAINT fk_emp_dept FOREIGN KEY (dept_id)
REFERENCES departments(dept_id)
)
CLUSTER dept_emp_cluster (dept_id);
- 두 테이블 모두 클러스터에 종속되며, dept_id를 기준으로 같은 블록에 저장됩니다.
- 클러스터 키는 반드시 모든 테이블에 존재해야 합니다.
- 클러스터 테이블은 클러스터가 속한 테이블스페이스에 포함됩니다.
참고사항
| 항목 | 설명 |
| SIZE | Oracle이 한 클러스터 키에 몇 개의 행이 저장될지 예측할 수 있도록 힌트 |
| INDEX | Index Cluster에서는 반드시 필요 |
| HASH CLUSTER | 별도로 CREATE CLUSTER ... HASHKEYS n 구문 사용 |
728x90
'📁 Database > Oracle' 카테고리의 다른 글
| [Oracle] 클러스터 테이블(Clustered Table) 관련 조회 쿼리 (0) | 2025.08.05 |
|---|---|
| [Oracle] expdp 수행 도중 ORA-02032: clustered tables cannot be used before the cluster index is built (ORA-31693, 2354, 2373, 2032) (0) | 2025.08.05 |
| [Oracle] 클러스터 테이블(Clustered Table)에 대해 (2) | 2025.08.05 |
| [Oracle] RMAN으로 NetBackup 복구 (0) | 2025.07.28 |
| [Oracle] RMAN 복구는 원본 서버와 대상 서버의 OS 계정이 같아야 동작한다(ORA-19507, 27029, 19511) (0) | 2025.07.28 |