본문 바로가기
Database/Oracle

[ORACLE] USER_REFS 완전 분석 : REF 컬럼과 객체 타입 관계 파악 전략

by Papa Martino V 2025. 7. 31.
728x90

USER_REFS 완전 분석 : REF 컬럼과 객체 타입 관계 파악 전략
[ORACLE] USER_REFS

 

1. USER_REFS란?

USER_REFS는 Oracle에서 현재 사용자가 소유한 테이블의 객체 타입 컬럼 중 REF (참조 타입) 컬럼과 REF 속성을 조회할 수 있는 데이터 딕셔너리 뷰입니다. 이는 ALL_REFS와 동일한 구조를 가지며, 단지 OWNER 컬럼이 생략되었다는 차이만 있습니다.

2. 주요 컬럼 구조

컬럼명 설명
TABLE_NAME REF 컬럼이 포함된 테이블 이름
COLUMN_NAME REF 컬럼 또는 경로 기반 속성 이름
WITH_ROWID ROWID 저장 여부 (YES/NO)
IS_SCOPED REF 컬럼이 스코프 여부 (YES/NO)
SCOPE_TABLE_NAME 스코프 테이블 이름 (접근 가능한 경우)
OBJECT_ID_TYPE OID 타입 (USER‑DEFINED / SYSTEM GENERATED)

ALL_REFS와 동일한 컬럼 구성을 가지며, OWNER 컬럼은 포함되지 않습니다.

3. USER_REFS vs ALL_REFS vs DBA_REFS 비교

뷰 이름 접근 범위 OWNER 컬럼 포함 여부 사용 목적
USER_REFS 현재 사용자가 소유한 테이블 X 자신의 REF 컬럼 구조 파악
ALL_REFS 접근 가능한 모든 REF 컬럼 O 타 스키마 REF 포함 전체 조회
DBA_REFS 데이터베이스 전체 REF 정보 O DBA 전체 구조 감사용

4. 실무 활용 시나리오

  • 객체 타입 컬럼 구조 파악: REF 컬럼이 포함된 테이블과 속성 확인
  • 스코프 여부 점검: IS_SCOPED 컬럼을 통해 객체 참조 범위 파악
  • OID 타입 분석: 사용자 정의 또는 시스템 생성 여부 확인
  • 정적 분석 자동화: 자동 생성 리포트 기반 메타 정보 문서화

5. 조회 예시

-- 사용자 REF 컬럼 전체 목록
SELECT table_name, column_name, with_rowid, is_scoped, scope_table_name, object_id_type
FROM user_refs
ORDER BY table_name, column_name;

-- 특정속성 경로를 포함한 REF 컬럼 필터링
SELECT *
FROM user_refs
WHERE column_name LIKE 'DEPT%.REF%';

6. 주의사항 및 활용 팁

  • OWNER 컬럼이 없으므로, 다중 스키마 작업 시 ALL_REFS 또는 DBA_REFS와 결합 필요
  • REF 컬럼은 객체 타입에서만 생성 가능하므로, 일반 컬럼은 표시되지 않음
  • OID 타입 파악을 통해 사용자 정의 정의체 여부 파악 가능

출처

  • Oracle Database Reference 10g Release 1 – USER_REFS 설명 
  • Oracle Database Reference 12c/19c – ALL_REFS 구조 비교 
728x90