728x90

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. 참고자료
- Oracle Database 21c Reference: https://docs.oracle.com/en/database/
- Oracle PL/SQL Programming by Steven Feuerstein
- Oracle SQL Developer 실무 활용 경험
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_COL_COMMENTS 뷰 활용 법 : 컬럼 설명 관리의 핵심 (0) | 2025.06.16 |
|---|---|
| [ORACLE] ALL_TAB_PRIVS 뷰 완벽 가이드 : 테이블 권한 조회 및 실무 활용법 (0) | 2025.06.15 |
| [ORACLE] ALL_OBJECTS 뷰 완전 정복 : 객체 관리와 분석의 핵심 (0) | 2025.06.15 |
| [ORACLE] ALL_SYNONYMS 뷰 완벽 해설과 실무 활용법 (0) | 2025.06.15 |
| [ORACLE] ALL_TRIGGERS 뷰로 트리거 관리와 분석 완전 정복 (0) | 2025.06.15 |