본문 바로가기
Database/Oracle

[ORACLE] ALL_DEPENDENCIES 뷰 완전 분석 및 활용 전략

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

오라클 ALL_DEPENDENCIES 뷰 완전 분석 및 활용 전략
[Oracle] ALL_DEPENDENCIES

 

Oracle 데이터베이스에서는 객체 간의 의존 관계를 추적하고 분석하는 것이 매우 중요합니다. 특히, 뷰, 프로시저, 함수, 패키지, 트리거 등 다양한 SQL 객체가 서로를 참조하는 경우, 하나의 객체 변경이 연쇄적으로 다른 객체에 영향을 줄 수 있기 때문입니다. 이러한 객체 간 의존 관계를 파악할 수 있도록 지원하는 뷰가 바로 ALL_DEPENDENCIES입니다.

1. ALL_DEPENDENCIES 뷰란?

ALL_DEPENDENCIES는 사용자가 접근 가능한 객체들 사이의 의존 관계를 보여주는 데이터 딕셔너리 뷰입니다. 이 뷰는 어떤 객체가 다른 객체에 의존하고 있는지를 명확하게 식별할 수 있게 해주며, 시스템의 구조를 분석하거나 문제 발생 시 원인을 추적하는 데 매우 유용합니다.

2. 주요 컬럼 설명

ALL_DEPENDENCIES 뷰는 아래와 같은 중요한 컬럼들을 포함합니다:

컬럼명 설명
OWNER 의존하는 객체의 소유자
NAME 의존하는 객체의 이름
TYPE 의존하는 객체의 타입 (예: TABLE, PROCEDURE 등)
REFERENCED_OWNER 참조된 객체의 소유자
REFERENCED_NAME 참조된 객체의 이름
REFERENCED_TYPE 참조된 객체의 타입
DEPENDENCY_TYPE 의존성 유형 ('HARD' 또는 'SYNONYM' 등)

3. 실무 활용 예시

특정 프로시저가 참조하는 객체를 찾는 쿼리 예시는 다음과 같습니다:

SELECT referenced_name, referenced_type
FROM all_dependencies
WHERE name = 'CALC_SALARY'
  AND owner = 'HR';

이 쿼리는 HR 스키마의 CALC_SALARY 프로시저가 어떤 객체를 참조하는지를 보여줍니다.

반대로, 특정 테이블을 참조하고 있는 객체를 조회하고 싶다면:

SELECT owner, name, type
FROM all_dependencies
WHERE referenced_name = 'EMPLOYEES'
  AND referenced_owner = 'HR';

이는 EMPLOYEES 테이블을 참조하고 있는 모든 객체를 찾아낼 수 있습니다.

4. 의존성 뷰 비교

Oracle에는 다양한 의존성 관련 뷰가 존재합니다. 각각의 뷰는 조회 범위 및 사용 권한에 차이가 있습니다.

뷰 이름 조회 대상 사용 권한 주요 활용
USER_DEPENDENCIES 자신이 소유한 객체 일반 사용자 단일 사용자 분석
ALL_DEPENDENCIES 접근 가능한 모든 객체 일반 사용자 다중 객체 간 분석
DBA_DEPENDENCIES 데이터베이스 전체 DBA 권한 필요 전체 시스템 분석

5. 실무에서의 중요성

  • 객체 변경 시 영향 분석: 테이블이나 뷰를 수정할 경우, 해당 객체를 참조하는 다른 객체의 정상 동작 여부를 확인해야 합니다.
  • 의존성 체계 정리: 복잡한 시스템 구조를 도식화하고 문서화할 때 필수적입니다.
  • 디버깅 및 오류 추적: 의도치 않은 에러 발생 시, 원인을 추적하는 데 도움이 됩니다.

6. 의존성 종류

ALL_DEPENDENCIES의 DEPENDENCY_TYPE 컬럼은 아래와 같은 의존성 종류를 포함합니다:

종류 설명
HARD 명시적인 코드 내 참조 (예: SELECT, JOIN 등)
SYNONYM SYNONYM을 통해 간접적으로 참조된 객체
REF 리플렉션 또는 동적 SQL에 의해 참조

7. ALL_DEPENDENCIES를 활용한 자동화

이 뷰를 활용하면 다음과 같은 자동화 작업이 가능합니다:

  • 빌드 스크립트 자동 생성 (의존성 우선순위에 따른 배치)
  • 배포 전 영향 범위 리포트 출력
  • CI/CD 파이프라인에서 객체 참조 유효성 검사

8. 주의할 점

  • 의존성은 정적 분석 기준: 동적 SQL이나 런타임 생성 객체는 ALL_DEPENDENCIES에서 확인되지 않을 수 있습니다.
  • 케이스 센시티브: 객체 이름을 조회할 때는 항상 대문자로 작성해야 정확한 결과가 나옵니다.

9. 결론

Oracle 데이터베이스를 운영하거나 개발하는 모든 관계자에게 ALL_DEPENDENCIES 뷰는 필수 도구입니다. 객체 간 관계를 명확히 이해하고 관리함으로써 시스템의 안정성과 유연성을 동시에 확보할 수 있습니다. 정기적으로 이 뷰를 점검하고, 변경 작업 전에 의존성을 분석하는 습관은 장기적인 유지보수 비용을 획기적으로 줄여줄 수 있습니다.

10. 참고 자료

 

728x90