본문 바로가기
Database/Oracle

[ORACLE] ALL_SOURCE 뷰 완벽 가이드 : PL/SQL 소스코드 관리

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

오라클 ALL_SOURCE 뷰 완벽 가이드: PL/SQL 소스코드 관리
[Oracle] ALL_SOURCE

 

Oracle Database에서는 프로시저, 함수, 패키지, 트리거 등 다양한 PL/SQL 객체를 사용할 수 있습니다. 이러한 객체들의 소스 코드를 추출하고 관리하기 위해 사용되는 시스템 뷰가 ALL_SOURCE입니다. 이 글에서는 ALL_SOURCE 뷰의 구조실무 활용법을 상세히 정리하여, 개발자와 DBA가 객체 소스를 효과적으로 분석하고 유지보수할 수 있도록 돕습니다.

1. ALL_SOURCE란 무엇인가?

ALL_SOURCE는 사용자가 접근할 수 있는 PL/SQL 객체의 소스 코드를 줄 단위로 조회할 수 있는 시스템 뷰입니다. 프로시저, 함수, 패키지, 트리거, 타입 등 Oracle에 저장된 모든 코드의 구조를 확인하는 데 활용됩니다.

2. 주요 컬럼 설명

아래는 ALL_SOURCE 뷰의 주요 컬럼입니다:

컬럼명 설명
OWNER PL/SQL 객체의 소유자
NAME 객체 이름 (예: 함수명, 프로시저명)
TYPE 객체 유형 (PACKAGE, PROCEDURE 등)
LINE 코드 줄 번호
TEXT 코드 내용 (한 줄 단위)

3. USER_SOURCE, ALL_SOURCE, DBA_SOURCE 비교

뷰 이름 대상 객체 사용 권한
USER_SOURCE 사용자 본인의 객체 일반 사용자
ALL_SOURCE 접근 권한이 있는 객체 일반 사용자
DBA_SOURCE 모든 사용자 객체 DBA 권한 필요

4. 실무 활용 예제

4.1 특정 패키지의 전체 소스코드 조회


SELECT TEXT
FROM ALL_SOURCE
WHERE NAME = 'EMP_PKG'
  AND TYPE = 'PACKAGE'
ORDER BY LINE;
  

4.2 특정 함수 소스 조회 (줄 번호 포함)


SELECT LINE, TEXT
FROM ALL_SOURCE
WHERE NAME = 'CALC_SALARY'
  AND TYPE = 'FUNCTION'
ORDER BY LINE;
  

4.3 PL/SQL 객체 중에서 특정 키워드가 포함된 코드 검색


SELECT NAME, LINE, TEXT
FROM ALL_SOURCE
WHERE UPPER(TEXT) LIKE '%COMMIT%';
  

4.4 오늘 생성된 객체의 소스만 확인


SELECT A.OWNER, A.NAME, A.TYPE, A.LINE, A.TEXT
FROM ALL_SOURCE A
JOIN ALL_OBJECTS O
  ON A.OWNER = O.OWNER AND A.NAME = O.OBJECT_NAME
WHERE TRUNC(O.CREATED) = TRUNC(SYSDATE)
ORDER BY A.NAME, A.LINE;
  

5. 관리 및 분석 전략

  • 정기 백업: 저장된 객체의 소스를 정기적으로 추출하여 버전 관리 시스템(Git 등)에 백업합니다.
  • 변경 감지: LAST_DDL_TIME과 함께 사용하여 최근 수정된 소스 파악
  • 코드 리뷰 자동화: 텍스트에서 특정 문법이나 금지 키워드를 탐색하여 코드 품질 관리
  • 에러 추적: ALL_ERRORS 뷰와 함께 사용하여 컴파일 에러 위치 식별

6. ALL_SOURCE 활용 체크리스트

  • 모든 프로시저/패키지/함수의 최신 소스코드를 보관하고 있는가?
  • 컴파일 오류 발생 시 ALL_SOURCE로 해당 위치를 추적하고 있는가?
  • 소스 분석 자동화에 활용하고 있는가? (예: 리팩토링 대상 식별)
  • 소스코드 버전 변경 시 변경 이력을 남기고 있는가?

7. 관련 뷰 비교 요약

뷰 이름 설명 조회 범위
ALL_SOURCE 접근 가능한 PL/SQL 객체의 코드 자신 및 권한 있는 객체
ALL_ERRORS 컴파일 오류 정보 오류 발생한 PL/SQL 객체
ALL_OBJECTS 객체 생성 및 상태 정보 전체 객체 메타데이터

8. 결론

Oracle의 ALL_SOURCE 뷰는 데이터베이스에 저장된 모든 PL/SQL 코드의 핵심 원본을 분석하고 관리하는 데 매우 유용한 도구입니다. 코드 변경 이력 추적, 품질 관리, 성능 개선 분석 등 다양한 실무 요구사항에 적극 활용할 수 있으며, ALL_OBJECTS, ALL_ERRORS 등과 함께 사용하면 더욱 강력한 유지보수 체계를 구축할 수 있습니다.

9. 참고자료

 

728x90