반응형
📌 Oracle 파티션(Partition) 기능과 생성 방법
1. 파티션이란?
Oracle의 파티션은 큰 테이블이나 인덱스를 논리적으로 하나로 유지하면서도, 물리적으로 여러 조각으로 나누는 기능입니다.
→ 사용자는 전체 테이블을 조회하는 것처럼 보이지만, 내부적으로는 파티션별로 데이터가 분산 저장됩니다.
2. 파티션 장점
- 성능 향상
- 특정 범위 조건이 있는 쿼리는 해당 파티션만 스캔 → 속도 개선
- 데이터 관리 용이
- 오래된 데이터 파티션만 별도 삭제/아카이브 가능
- 가용성 확보
- 특정 파티션만 관리 작업 수행 가능 → 나머지 파티션은 서비스 정상 유지
- 병렬 처리 가능
- 파티션 단위로 병렬 쿼리 실행
3. 파티션 유형 (Oracle)
✅ Range Partition (범위 파티션)
- 특정 범위 값으로 나눔 (날짜, 숫자 기준)
✅ List Partition (리스트 파티션)
- 특정 값의 집합으로 나눔 (지역 코드, 카테고리 등)
✅ Hash Partition (해시 파티션)
- 해시 알고리즘으로 자동 분산 → 균등 분할에 적합
✅ Composite Partition (복합 파티션)
- 위 방식을 혼합 (예: 범위 + 해시)
4. 파티션 생성 예제
📍 Range Partition 예제
CREATE TABLE sales (
id NUMBER,
sale_date DATE,
amount NUMBER
)
PARTITION BY RANGE (sale_date) (
PARTITION sales_q1 VALUES LESS THAN (TO_DATE('2024-04-01','YYYY-MM-DD')),
PARTITION sales_q2 VALUES LESS THAN (TO_DATE('2024-07-01','YYYY-MM-DD')),
PARTITION sales_q3 VALUES LESS THAN (TO_DATE('2024-10-01','YYYY-MM-DD')),
PARTITION sales_q4 VALUES LESS THAN (TO_DATE('2025-01-01','YYYY-MM-DD'))
);
📍 List Partition 예제
CREATE TABLE customers (
id NUMBER,
region VARCHAR2(10),
name VARCHAR2(50)
)
PARTITION BY LIST (region) (
PARTITION asia VALUES ('KR','JP','CN'),
PARTITION europe VALUES ('FR','DE','UK'),
PARTITION etc VALUES (DEFAULT)
);
📍 Hash Partition 예제
CREATE TABLE orders (
order_id NUMBER,
customer_id NUMBER,
amount NUMBER
)
PARTITION BY HASH (customer_id)
PARTITIONS 4;
📍 Composite Partition 예제(Range + Hash)
CREATE TABLE sales_data (
id NUMBER,
sale_date DATE,
amount NUMBER
)
PARTITION BY RANGE (sale_date)
SUBPARTITION BY HASH (id) SUBPARTITIONS 4 (
PARTITION sales_2024 VALUES LESS THAN (TO_DATE('2025-01-01','YYYY-MM-DD')),
PARTITION sales_2025 VALUES LESS THAN (TO_DATE('2026-01-01','YYYY-MM-DD'))
);
5. 파티션 관리 쿼리
📍 파티션 추가
ALTER TABLE sales
ADD PARTITION sales_2025 VALUES LESS THAN (TO_DATE('2026-01-01','YYYY-MM-DD'));
📍 파티션 삭
ALTER TABLE sales DROP PARTITION sales_q1;
📍 파티션 이름 변경
ALTER TABLE sales RENAME PARTITION sales_q2 TO sales_april;
📍 특정 파티션만 조회
SELECT * FROM sales PARTITION (sales_q3);
6. 기존 테이블 파티션 확인하기
Oracle에서는 데이터 딕셔너리 뷰를 통해 파티션 정보를 확인할 수 있습니다.
📍 테이블의 파티션 목록 확인
SELECT table_name, partition_name, high_value, tablespace_name
FROM user_tab_partitions
WHERE table_name = 'SALES';
- partition_name → 파티션 이름
- high_value → 파티션 분할 기준 값
- tablespace_name → 저장된 테이블스페이스
📍 서브파티션까지 확인 (Composite Partition인 경우)
SELECT table_name, partition_name, subpartition_name, high_value
FROM user_tab_subpartitions
WHERE table_name = 'SALES_DATA';
📍 현재 DB에서 파티션 여부 확인
partitioning_type → RANGE, LIST, HASH, COMPOSITE 여부 표시
✅ 정리
- Oracle 파티션은 대용량 테이블 성능 및 관리 효율성을 높여줌
- 테이블 생성 시 Range / List / Hash / Composite 방식 적용 가능
- 기존 테이블의 파티션 구조는 user_tab_partitions, user_part_tables 뷰에서 확인
반응형
'DB' 카테고리의 다른 글
| [Oracle]ORA-28000: 계정 잠금 시 해결 방법 — Oracle 21c 기준 (0) | 2025.09.24 |
|---|---|
| [Oracle] 특정 컬럼을 사용하는 테이블 조회 (0) | 2025.09.24 |
| [Oracle] 테이블 파티션 자동으로 생성 (0) | 2025.06.13 |
| [Oracle] 테이블스페이스(DBF) 정보 및 사용량 조회 방법 (0) | 2025.05.13 |
| [Oracle] Oracle XE 리스너 기동 시 발생하는 TNS 오류(TNS-12550, TNS-12560, TNS-00252) (0) | 2025.05.08 |