728x90

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
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_REPAUDIT_COLUMN 뷰의 이해와 실무 활용법 (0) | 2025.07.31 |
|---|---|
| [ORACLE] USER_REPAUDIT_ATTRIBUTE 뷰의 실전 활용 가이드 (0) | 2025.07.31 |
| [ORACLE] USER_REGISTERED_SNAPSHOTS 완전 분석 : 사용자 소유 스냅샷 정보 파악과 관리 전략 (0) | 2025.07.31 |
| [ORACLE] DBMS_LOCK_ALLOCATED 완전 가이드 : 락 할당 상태 분석과 성능 최적화 전략 (0) | 2025.07.31 |
| [ORACLE] DBMS_ALERT_INFO 완전 분석 : 실시간 알림 시스템과 통지 아키텍처 (0) | 2025.07.31 |