
1. ALL_COLL_TYPES란?
ALL_COLL_TYPES는 오라클 데이터베이스에서 사용자가 접근할 수 있는 컬렉션(Collection) 타입의 정보를 보여주는 데이터 딕셔너리 뷰입니다. 컬렉션 타입은 PL/SQL 프로그래밍에서 VARRAY 또는 NESTED TABLE과 같이 하나의 변수에 다수의 데이터를 저장할 수 있도록 지원하는 사용자 정의 타입입니다. 이 뷰를 통해 컬렉션 타입의 정의, 요소 데이터 타입, 길이 제한, 스키마 등 중요한 메타데이터를 파악할 수 있습니다.
2. 컬렉션 타입이란?
오라클 PL/SQL에서 컬렉션 타입은 여러 개의 데이터를 하나의 구조 안에서 처리하기 위한 유용한 도구입니다. 대표적으로 다음과 같은 종류가 있습니다:
- VARRAY (Variable-size array): 정해진 최대 크기를 가지며, 순차적인 배열 형태로 저장됩니다.
- NESTED TABLE: 무제한 크기의 동적 배열로, 테이블 컬럼에도 저장 가능하며 쿼리에서 JOIN도 가능함.
3. ALL_COLL_TYPES 주요 컬럼 설명
다음은 ALL_COLL_TYPES 뷰의 주요 컬럼과 그 역할입니다.
| 컬럼명 | 설명 |
|---|---|
| OWNER | 컬렉션 타입을 정의한 사용자 또는 스키마 |
| TYPE_NAME | 컬렉션 타입 이름 |
| COLL_TYPE | 컬렉션 종류 (VARRAY 또는 NESTED TABLE) |
| UPPER_BOUND | VARRAY의 최대 요소 수 |
| ELEMENT_TYPE_NAME | 컬렉션이 저장하는 데이터 타입 이름 |
| ELEMENT_TYPE_OWNER | ELEMENT_TYPE의 소유자 |
4. 컬렉션 타입 예제 및 활용
다음은 컬렉션 타입을 생성하고 ALL_COLL_TYPES에서 확인하는 예시입니다.
-- 사용자 정의 컬렉션 타입 생성
CREATE OR REPLACE TYPE email_list AS VARRAY(5) OF VARCHAR2(100);
-- ALL_COLL_TYPES 조회
SELECT
type_name, coll_type, upper_bound, element_type_name
FROM
all_coll_types
WHERE
type_name = 'EMAIL_LIST';
이 쿼리를 통해 컬렉션의 최대 크기, 요소 타입을 확인할 수 있으며 코드 유지 관리나 문서화에 유용하게 사용됩니다.
5. VARRAY와 NESTED TABLE 비교
| 항목 | VARRAY | NESTED TABLE |
|---|---|---|
| 크기 제한 | 필수로 지정 | 무제한 |
| 저장 순서 보장 | 보장됨 | 보장되지 않음 |
| 디스크 저장 시 | 전체가 하나의 컬럼에 저장 | 별도의 테이블로 분리 저장 |
| 활용 용도 | 정해진 개수의 속성 관리 | 다대다 관계, 유연한 집합 |
6. 실무 활용 예시
- 오라클 객체 설계 시: 컬렉션 타입 정의를 통해 유연한 테이블 구조 설계 가능
- Web API 연동: JSON 데이터나 목록 처리 시 PL/SQL 컬렉션 타입으로 매핑
- 정적 목록 처리: 예: 제품 카테고리, 권한 목록 등을 VARRAY로 처리
- 데이터 이전 스크립트 자동화: 컬렉션 구조 분석을 통한 이식성 향상
7. 성능 및 튜닝 포인트
컬렉션 타입은 매우 유용하지만 남용하면 퍼포먼스 이슈를 유발할 수 있습니다. 예를 들어 대량의 데이터를 VARRAY에 담아 반환하면 PGA 메모리 사용량이 급증할 수 있습니다. 따라서 ALL_COLL_TYPES 뷰를 통해 정의된 컬렉션을 지속적으로 모니터링하고, 불필요하게 크거나 중복된 타입은 통합하거나 구조 개선이 필요합니다.
8. 결론
ALL_COLL_TYPES는 오라클 사용자 정의 컬렉션 타입의 메타데이터를 파악할 수 있는 핵심 뷰입니다. 복잡한 PL/SQL 로직이나 객체 지향적 데이터 구조 설계 시 매우 중요한 역할을 하며, 특히 데이터 모델 문서화, 구조 변경 영향 분석, 자동화 도구 개발 등에 있어 필수적인 정보원입니다.
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_COL_PRIVS_MADE 뷰 완전 분석 : 직접 부여한 컬럼 권한 추적 가이드 (0) | 2025.06.20 |
|---|---|
| [ORACLE] ALL_COL_PRIVS 뷰 완벽 가이드 : 실무에 바로 적용하는 보안 권한 조회법 (0) | 2025.06.20 |
| [ORACLE] ALL_CLUSTER_HASH_EXPRESSIONS 완벽 가이드 - 해시 클러스터 구조 해부 (0) | 2025.06.19 |
| [ORACLE] ALL_CLUSTERS 뷰 완전 분석 - 클러스터 구조의 이해 (0) | 2025.06.19 |
| [ORACLE] ALL_CATALOG() 초보도 이해하는 데이터 딕셔너리 활용법 (0) | 2025.06.18 |