본문 바로가기
Database/Oracle

[ORACLE] ALL_OBJECT_TABLES 뷰 완전 정복 가이드

by Papa Martino V 2025. 6. 25.
728x90

Oracle Database는 객체 지향 모델링을 지원하며, 이와 관련된 다양한 기능을 제공합니다. 그중 핵심적인 구조 중 하나가 오브젝트 테이블(Object Table)입니다. 이러한 오브젝트 테이블의 정의와 속성을 파악하고 관리하기 위해 오라클은 ALL_OBJECT_TABLES라는 데이터 딕셔너리 뷰를 제공합니다. 이 글에서는 ALL_OBJECT_TABLES의 구조, 실무 활용 전략, 관련 뷰 비교 등을 중심으로 오브젝트 테이블을 철저히 분석합니다.

1. ALL_OBJECT_TABLES란?

ALL_OBJECT_TABLES는 현재 사용자가 접근 가능한 오브젝트 테이블의 정의 정보를 담고 있는 시스템 뷰입니다. 오브젝트 테이블이란 Oracle의 객체 타입을 기반으로 만들어진 테이블로, 레코드를 행(row)이 아닌 객체(object) 단위로 관리하는 특징이 있습니다.

2. 주요 컬럼 설명

컬럼명 설명
OWNER 오브젝트 테이블을 소유한 사용자
TABLE_NAME 오브젝트 테이블 이름
OBJECT_TYPE_OWNER 기반이 되는 오브젝트 타입을 정의한 스키마
OBJECT_TYPE_NAME 기반이 되는 오브젝트 타입 이름
OBJECT_ID_TYPE 객체 ID 유형 (예: SYSTEM GENERATED, PRIMARY KEY BASED 등)

3. 오브젝트 테이블이란?

오브젝트 테이블은 일반적인 관계형 테이블과 달리 Oracle 객체 타입을 기반으로 생성되며, 각 행이 객체 인스턴스를 나타냅니다. 예를 들어, 고객 정보를 나타내는 객체 타입을 정의한 뒤, 이를 기반으로 고객 테이블을 생성할 수 있습니다.

4. 오브젝트 테이블 생성 및 ALL_OBJECT_TABLES 조회 예시


-- 객체 타입 정의
CREATE TYPE customer_obj AS OBJECT (
  id NUMBER,
  name VARCHAR2(100),
  email VARCHAR2(100)
);

-- 오브젝트 테이블 생성
CREATE TABLE customer_table OF customer_obj
OBJECT ID SYSTEM GENERATED;

-- ALL_OBJECT_TABLES 조회
SELECT table_name, object_type_name, object_id_type
FROM all_object_tables
WHERE table_name = 'CUSTOMER_TABLE';
    

위 쿼리는 오브젝트 테이블이 올바르게 생성되었는지 확인하고, 객체 타입 및 ID 정책을 명확히 파악할 수 있습니다.

5. 관련 뷰와의 비교

ALL_OBJECT_TABLES 외에도 오브젝트 관련 정보를 확인할 수 있는 뷰들이 있습니다. 아래 표는 이들 간의 차이점을 요약한 것입니다.

뷰 이름 주요 기능 주요 차이점
ALL_OBJECT_TABLES 오브젝트 테이블의 정의 정보 조회 객체 타입 기반 테이블에만 적용
ALL_TABLES 모든 테이블의 일반 정보 조회 객체 타입 여부 미포함
ALL_TYPES 정의된 객체 타입 정보 조회 테이블이 아닌 타입 중심

6. 실무에서의 활용 방안

  • 모델링 문서화: 객체 타입 기반의 테이블 구조를 문서화할 때 활용
  • 마이그레이션 계획: 객체 타입 테이블 포함 여부 확인 및 이전 전략 수립
  • 보안 점검: 객체 테이블 소유자와 객체 타입 소유자 간 권한 정합성 검토
  • 개발 디버깅: 객체 ID 정책 확인을 통해 DML 동작 방식 이해

7. 유의사항 및 실무 팁

  • OBJECT ID 정책: SYSTEM GENERATED는 Oracle이 자동 관리, PRIMARY KEY BASED는 수동 관리 필요
  • 객체 테이블은 일반 테이블과 호환되지 않는 경우가 있음: SQL*Loader나 외부 시스템 연동 시 주의 필요
  • 객체 타입 재정의 불가: 객체 타입 변경 시 DROP 후 재생성 필요 (의존성 높음)

8. 오브젝트 테이블과 관계형 테이블 비교

항목 오브젝트 테이블 일반 관계형 테이블
데이터 구조 객체 기반 (타입 정의 필수) 컬럼 기반
ID 생성 OBJECT ID 또는 사용자 정의 키 일반적으로 PK/시퀀스 사용
유연성 높음 (상속, 메서드 포함 가능) 표준화에 적합
사용 용도 객체지향 모델 기반 시스템 일반 업무 시스템

9. 참고자료

728x90