728x90

1. USER_VARRAYS란?
Oracle에서 USER_VARRAYS 뷰는 현재 사용자 스키마에서 정의된 VARRAY(Variable-size array) 타입의 정보를 조회할 수 있는 데이터 딕셔너리 뷰입니다. VARRAY는 컬렉션(Collection) 타입 중 하나로, **정해진 최대 크기를 갖는 배열 형태**의 데이터 구조를 지원합니다. 복수의 데이터를 단일 컬럼에 저장하거나, 객체 타입과 결합하여 복잡한 구조를 표현할 때 사용됩니다.
USER_VARRAYS는 이와 같은 VARRAY 타입의 정의, 최대 크기, 저장 방식 등을 확인하는 데 필수적인 뷰입니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| TYPE_NAME | VARRAY 타입의 이름 |
| TYPE_OWNER | 타입을 소유한 사용자 |
| UPPER_BOUND | 배열의 최대 크기 |
| ELEM_TYPE_NAME | 배열 원소의 데이터 타입 |
| ELEM_TYPE_OWNER | 데이터 타입을 정의한 소유자 |
| STORAGE | 배열이 테이블 내(INLINE) 또는 외부(OUT OF LINE)에 저장되는지 여부 |
3. 실전 활용 예제
3.1. 사용자 정의 VARRAY 타입 전체 조회
SELECT
TYPE_NAME,
UPPER_BOUND,
ELEM_TYPE_NAME,
STORAGE
FROM
USER_VARRAYS;
3.2. 특정 VARRAY 타입 구조 확인
SELECT
*
FROM
USER_VARRAYS
WHERE
TYPE_NAME = 'PHONE_LIST';
3.3. INLINE 저장 방식만 필터링
SELECT
TYPE_NAME,
UPPER_BOUND
FROM
USER_VARRAYS
WHERE
STORAGE = 'INLINE';
4. Oracle 컬렉션 타입 비교
| 타입 | 특징 | 저장 방식 | 사용 예시 |
|---|---|---|---|
| VARRAY | 고정된 최대 크기의 순차 배열 | INLINE 또는 OUT OF LINE | 전화번호 목록, 옵션 리스트 등 |
| NESTED TABLE | 무제한 크기의 중첩 테이블 | OUT OF LINE | 다대다 관계 테이블 |
| ASSOCIATIVE ARRAY | 인덱스를 기반으로 한 맵 구조 | 메모리 내 처리 (PL/SQL 전용) | 캐시, 맵 데이터 저장 |
5. USER_VARRAYS 활용 전략
- 객체 타입과 조합: VARRAY를 OBJECT TYPE에 포함하여 복합 데이터 모델 생성
- JSON/REST 응답 포맷: VARRAY는 JSON 배열 구조와 유사하므로 API 응답 모델에 유용
- 제약 기반 모델링: 최대 크기를 미리 정의하여 데이터 유효성 강화
- 성능 고려 저장 방식 선택: 데이터 크기에 따라 INLINE/OUT OF LINE 전략 수립
6. 주의사항
- UPPER_BOUND 제한: 크기를 초과하는 삽입은 오류 발생
- 저장 방식에 따른 성능 차이: INLINE은 빠르지만 크기 제한 존재
- DDL 변경 시 주의: VARRAY 타입은 변경 시 DROP 후 재생성 필요
7. 결론
USER_VARRAYS 뷰는 Oracle에서 VARRAY 타입을 정의하고 사용하는 구조를 분석하는 데 필수적인 도구입니다. 다양한 컬렉션 타입 중에서도 VARRAY는 순차적이며 고정된 데이터 목록을 다룰 때 적합하며, 객체 중심 설계, API 포맷 구성, 데이터 무결성 보장 측면에서 실무 활용도가 높습니다.
8. 출처
- Oracle Corporation. Oracle Database SQL Language Reference
- Steven Feuerstein, 『Oracle PL/SQL Programming』
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] INDEX_HISTOGRAM : 인덱스 구조 검증을 위한 숨겨진 통계 도구 (0) | 2025.09.09 |
|---|---|
| [ORACLE] GLOBAL_NAME 설정과 활용 (0) | 2025.08.20 |
| [ORACLE] USER_USTATS : 통계 수집 상태 및 최적화 전략 완전 분석 (0) | 2025.08.12 |
| [ORACLE] USER_UPDATABLE_COLUMNS : 컬럼 수정 가능 여부 진단과 활용 전략 (0) | 2025.08.11 |
| [ORACLE] USER_UNUSED_COL_TABS : 삭제된 컬럼 정보 조회와 정리 전략 (0) | 2025.08.11 |