하이브리드 파티셔닝(Hybrid Partitioning)이란?
Oracle 12c Release 2 버전에서는 외부 테이블(External Table)에도 파티션을 생성할 수 있는 기능이 처음 도입되었습니다. 이후 Oracle 19c에서는 하이브리드 파티셔닝(Hybrid Partitioning)이라는 강력한 새 기능이 추가되었습니다. 이 기능을 활용하면 일부 파티션은 데이터베이스 외부, 즉 플랫 파일(flat file)에 저장하고, 나머지 파티션은 테이블스페이스, 즉 데이터베이스 내부에 저장할 수 있습니다.
이 기능의 핵심 장점은 다음과 같습니다.
- 자주 조회되지 않는 오래된 파티션은 Linux 파일 시스템과 같은 외부 저장소로 이동
- 가장 활발하게 사용되는 최신 파티션은 Oracle 데이터베이스 내부에 유지
- 스토리지 비용 절감과 성능 관리를 동시에 달성
데모 시나리오 개요
이번 데모에서는 4개의 파티션(DATA_2019, DATA_2020, DATA_2021, DATA_2022)으로 구성된 하이브리드 파티션 테이블 DATA를 생성합니다. 2019년, 2020년, 2021년 데이터는 OS 디렉터리 /home/oracle/data_dir에 위치한 플랫 파일에 저장되어 있으며, 각 파일의 데이터는 공백 문자로 구분되어 있습니다.
Step 1: 데이터베이스 로그인 및 대상 PDB 지정
데이터베이스에 로그인한 뒤, 테이블을 생성할 대상 PDB(Pluggable Database)를 지정합니다.
Step 2: 디렉터리 객체 및 사용자 생성
OS 디렉터리 data_dir을 가리키는 데이터베이스 디렉터리 객체 DATA_FILES_DIR를 생성합니다. 이후 APP_USER 사용자를 만들고 해당 디렉터리에 대한 READ, WRITE 권한을 부여합니다.
Step 3: 하이브리드 파티션 테이블 생성
APP_USER 스키마에 하이브리드 파티션 테이블 DATA를 생성합니다. 이때 파티션 DATA_2019, DATA_2020, DATA_2021은 데이터베이스 외부의 플랫 파일에 있는 데이터를 참조하고, 파티션 DATA_2022만 데이터베이스 내부에 저장됩니다.
Step 4: 파티션별 데이터 조회
생성된 테이블에서 각 파티션별로 정상적으로 데이터를 조회할 수 있습니다.
DATA_2019 –
DATA_2020 –
DATA_2021 –
DATA_2022 –
Step 5: 하이브리드 파티션 테이블 여부 확인
생성된 테이블 DATA가 실제로 하이브리드 파티션 테이블인지 데이터 딕셔너리 뷰를 통해 확인합니다.
Step 6: 내부 파티션 삽입 테스트와 권한 오류
파티션 DATA_2022에 데이터를 삽입하려고 하면 ORA-01950: no privileges on tablespace 'USERS' 오류가 발생합니다. 이는 DATA_2022 파티션의 데이터가 USERS 테이블스페이스, 즉 데이터베이스 내부에 저장됨을 의미합니다. USERS 테이블스페이스에 대한 QUOTA(할당량)를 부여하면 DATA_2022 파티션에 정상적으로 데이터를 삽입할 수 있습니다.
Step 7: 파티션 저장 위치 검증
아래 쿼리 결과를 통해 파티션 DATA_2022만 데이터베이스 내부에 저장되어 있고, 나머지 파티션의 데이터는 모두 데이터베이스 외부에 위치함을 확인할 수 있습니다.
결론
Oracle 19c의 하이브리드 파티셔닝 기능을 활용하면 더 이상 활성화되지 않은 테이블의 오래된 파티션을 데이터베이스 외부의 보다 저렴한 스토리지로 손쉽게 이동할 수 있습니다. 반면 활성 상태의 테이블 데이터는 Oracle 데이터베이스 내부에 그대로 유지되므로, 스토리지 비용 절감과 운영 효율성이라는 두 마리 토끼를 잡을 수 있습니다.
궁금한 점이나 의견이 있다면 피드백 탭을 통해 남겨 주세요. 언제든지 함께 논의할 준비가 되어 있습니다.