본문 바로가기
Database/Oracle

[ORACLE] DBA_DEPENDENCIES 완벽 해설 : 객체 의존 관계 분석과 영향도 관리의 핵심

by Papa Martino V 2025. 10. 13.
728x90

DBA_DEPENDENCIES
[ORACLE] DBA_DEPENDENCIES

 

Oracle Database에서 객체 간의 관계를 명확히 파악하는 것은 **시스템 안정성과 유지보수 효율성**을 좌우하는 중요한 요소입니다. 프로시저, 뷰, 트리거, 패키지, 함수 등 수많은 객체가 서로를 참조하고 종속되어 있기 때문입니다. 이러한 복잡한 의존성을 추적하고 분석할 수 있도록 지원하는 뷰가 바로 DBA_DEPENDENCIES입니다. 본 글에서는 DBA_DEPENDENCIES의 구조와 역할, 실무에서의 활용 사례, 코드 변경 시 영향도 분석 방법, 그리고 성능 및 보안 측면에서의 활용 전략까지 깊이 있게 살펴봅니다.


1. DBA_DEPENDENCIES란?

DBA_DEPENDENCIES는 Oracle 데이터베이스 내에서 **객체 간 의존 관계(Object Dependencies)**를 정의한 시스템 뷰입니다. 이 뷰는 한 객체(예: VIEW, PROCEDURE)가 다른 객체(예: TABLE, FUNCTION)를 참조할 때 생성되는 관계 정보를 저장합니다. 즉, DBA_DEPENDENCIES는 “누가 누구를 참조하고 있는가?”를 추적하는 뷰로, 데이터베이스 변경 시 **영향도 분석(Impact Analysis)**의 핵심 도구로 활용됩니다.


2. DBA_DEPENDENCIES 주요 컬럼 구조

컬럼명 데이터 타입 설명
OWNER VARCHAR2(30) 의존 관계의 주체 객체를 소유한 스키마 이름
NAME VARCHAR2(30) 의존 관계를 가지는 객체 이름
TYPE VARCHAR2(30) 의존 관계 주체 객체의 유형 (TABLE, VIEW, PROCEDURE 등)
REFERENCED_OWNER VARCHAR2(30) 참조되는 객체의 스키마 이름
REFERENCED_NAME VARCHAR2(64) 참조되는 객체의 이름
REFERENCED_TYPE VARCHAR2(30) 참조되는 객체의 유형
DEPENDENCY_TYPE VARCHAR2(4) 의존 관계 유형 (HARD, SOFT 등)

이 중에서 NAMEREFERENCED_NAME은 의존 관계의 중심이며, DEPENDENCY_TYPE은 객체 간 연결 강도를 나타내는 중요한 지표입니다.


3. DEPENDENCY_TYPE의 의미

유형 설명 예시
HARD 직접 참조 관계. 참조 대상이 삭제되면 의존 객체도 INVALID 상태가 됨 VIEW가 TABLE을 참조
SOFT 간접 또는 동적 참조. 대상 변경 시 영향이 제한적 EXECUTE IMMEDIATE를 통해 동적 SQL 호출
SYNONYM 시노님을 통한 간접 참조 VIEW → SYNONYM → TABLE

의존성 유형을 구분함으로써, 어떤 객체가 변경될 경우 어느 범위까지 영향이 확산되는지를 예측할 수 있습니다.


4. DBA_DEPENDENCIES 조회 예시

① 특정 테이블을 참조하는 모든 객체 찾기

SELECT OWNER, NAME, TYPE
FROM DBA_DEPENDENCIES
WHERE REFERENCED_NAME = 'EMPLOYEES'
  AND REFERENCED_OWNER = 'HR';

② 특정 프로시저가 참조하는 객체 확인

SELECT REFERENCED_OWNER, REFERENCED_NAME, REFERENCED_TYPE
FROM DBA_DEPENDENCIES
WHERE OWNER = 'HR'
  AND NAME = 'CALC_SALARY_PROC';

③ 의존성 트리 전체 구조 분석 (CONNECT BY)

SELECT LEVEL, NAME, TYPE, REFERENCED_NAME, REFERENCED_TYPE
FROM DBA_DEPENDENCIES
START WITH NAME = 'EMP_VIEW'
CONNECT BY PRIOR REFERENCED_NAME = NAME;

이 쿼리를 통해 특정 객체의 전체 의존성 트리를 계층적으로 확인할 수 있으며, 변경 전후의 영향 범위를 예측하는 데 매우 유용합니다.


5. DBA_DEPENDENCIES와 관련된 주요 뷰 비교

뷰 이름 설명 활용 목적
DBA_DEPENDENCIES 모든 스키마의 객체 의존 관계 정보 전체 데이터베이스 수준의 의존성 분석
ALL_DEPENDENCIES 접근 가능한 객체 의존성 정보 권한 기반 분석
USER_DEPENDENCIES 현재 사용자 소유 객체의 의존성 정보 개발자/사용자 단위 분석

DBA_DEPENDENCIES는 DBA 권한이 필요한 뷰로, 전체 인스턴스의 객체 관계를 한눈에 파악할 수 있습니다.


6. 객체 변경 시 영향도 분석(Impact Analysis)

데이터베이스 개발 및 유지보수 중 **테이블 구조 변경(DROP/ALTER)** 또는 **패키지 수정**이 발생하면, 해당 객체를 참조하는 다른 객체들이 INVALID 상태로 전환될 수 있습니다. 이러한 상황을 사전에 파악하기 위해 DBA_DEPENDENCIES는 필수적인 도구로 사용됩니다.

① 변경 영향 대상 탐색 예시

SELECT OWNER, NAME, TYPE
FROM DBA_DEPENDENCIES
WHERE REFERENCED_NAME = 'CUSTOMERS'
AND REFERENCED_TYPE = 'TABLE';

② INVALID 객체 자동 재컴파일

EXEC UTL_RECOMP.RECOMP_SERIAL('HR');

이렇게 하면 특정 스키마 내의 의존 객체를 순차적으로 재컴파일하여 시스템 정상 상태를 유지할 수 있습니다.


7. DBA_DEPENDENCIES를 활용한 시스템 아키텍처 최적화

대규모 시스템에서는 의존성이 복잡해지면서, 성능 저하나 장애 전이 가능성이 커집니다. 이를 최소화하기 위한 DBA 관점의 전략은 다음과 같습니다.

  • 모듈화 설계: 의존성이 높은 객체(예: VIEW, PACKAGE)는 기능 단위로 분리
  • 시노님 관리: 중간 계층 객체를 통한 간접 의존성 최소화
  • 테스트 환경 격리: 개발/운영 환경 간 DB Link 및 의존 관계 분리
  • 정기 점검: DBA_DEPENDENCIES 기반으로 자동 영향도 리포트 생성

이러한 접근은 데이터베이스 변경 시 예기치 못한 장애를 예방하고, 장기적인 시스템 안정성을 확보하는 데 도움이 됩니다.


8. DBA_DEPENDENCIES의 실무 활용 사례

1️⃣ 대규모 ERP 시스템 업그레이드

ERP 패키지 업그레이드 시 수백 개의 뷰(View)와 프로시저가 테이블 스키마 변경에 영향을 받습니다. DBA_DEPENDENCIES를 사용하여 변경 대상 테이블을 기준으로 **참조 객체 리스트**를 도출하고, 자동화 스크립트를 통해 재컴파일 및 테스트 순서를 정의할 수 있습니다.

2️⃣ 데이터 마이그레이션 전후 비교

데이터 이관 시 대상 스키마의 의존성 구조를 비교하여 누락된 객체나 Broken Dependency를 탐지할 수 있습니다.

SELECT * FROM DBA_DEPENDENCIES
MINUS
SELECT * FROM DBA_DEPENDENCIES@REMOTE_DB;

이를 통해 마이그레이션 과정에서 손실된 참조 관계를 빠르게 식별할 수 있습니다.


9. DBA_DEPENDENCIES 관리 시 주의사항

항목 주의 내용 해결 방안
순환 의존성(Circular Dependency) 프로시저 또는 패키지가 서로를 참조하는 경우 컴파일 순서 오류 발생 의존성 트리 분석 후, 별도 재컴파일 순서 지정
삭제 시 영향 참조 대상 삭제 시 관련 뷰/트리거가 INVALID 처리 사전 영향도 분석 및 백업 수행
시노님 경로 오류 SYNONYM이 변경되면 참조 대상 불일치 DBA_SYNONYMS와 함께 교차 점검
버전 불일치 패키지 헤더와 본문이 다른 버전일 경우 INVALID 발생 패키지 전체 재컴파일

10. 결론

DBA_DEPENDENCIES는 Oracle 데이터베이스에서 객체 간 연결 관계를 관리하는 가장 중요한 뷰 중 하나입니다. 이를 활용하면 코드 변경 시의 영향도를 체계적으로 예측하고, 시스템의 안정성을 유지할 수 있습니다. DBA_DEPENDENCIES는 단순한 메타데이터 이상의 의미를 가지며, 지속 가능한 데이터베이스 구조 설계와 품질 관리의 근간을 형성하는 도구라 할 수 있습니다.


출처

  • Oracle® Database Reference 19c - DBA_DEPENDENCIES View
  • Oracle® Database Concepts Guide
  • Oracle® Database PL/SQL User’s Guide
  • Database Dependency Management Practices
728x90