
ALL_ARGUMENTS는 Oracle Database에서 프로시저, 함수, 패키지 등에 정의된 매개변수(Argument)를 확인할 수 있는 매우 중요한 데이터 딕셔너리 뷰입니다. 이 뷰는 특히 PL/SQL 기반의 로직 분석, 리버스 엔지니어링, 문서 자동화에 있어 핵심적인 정보를 제공합니다.
1. ALL_ARGUMENTS란 무엇인가?
ALL_ARGUMENTS 뷰는 사용자가 접근할 수 있는 모든 객체의 인자(argument) 정보를 제공합니다. 이 뷰를 통해 각 함수나 프로시저가 어떤 입력값과 출력값을 사용하는지, 어떤 타입의 데이터가 사용되는지, 인자의 위치나 역할 등을 명확히 파악할 수 있습니다.
2. 주요 컬럼 설명
다음은 ALL_ARGUMENTS 뷰에서 자주 사용하는 주요 컬럼들의 설명입니다.
| 컬럼명 | 설명 |
|---|---|
| OWNER | 해당 객체(프로시저 등)의 소유자 |
| OBJECT_NAME | 프로시저, 함수, 패키지의 이름 |
| PACKAGE_NAME | 해당 객체가 속한 패키지 이름 (NULL이면 독립 객체) |
| ARGUMENT_NAME | 인자의 이름 (리턴 값일 경우 NULL) |
| POSITION | 인자의 순서 |
| DATA_TYPE | 인자의 데이터 타입 (VARCHAR2, NUMBER 등) |
| IN_OUT | IN / OUT / INOUT 구분 |
3. 실무 활용 예제
3.1 프로시저 또는 함수의 인자 목록 확인
SELECT argument_name, position, data_type, in_out
FROM ALL_ARGUMENTS
WHERE object_name = 'PROCESS_ORDER'
AND owner = 'SALES';
특정 프로시저(PROCESS_ORDER)가 어떤 인자를 사용하는지 확인할 수 있습니다.
3.2 리턴 값이 존재하는 함수 확인
SELECT object_name, data_type
FROM ALL_ARGUMENTS
WHERE argument_name IS NULL
AND position = 0;
리턴 값을 가지는 함수는 ARGUMENT_NAME이 NULL이고 POSITION = 0인 항목으로 나타납니다.
3.3 패키지 내 모든 함수 및 프로시저 인자 확인
SELECT package_name, object_name, argument_name, data_type
FROM ALL_ARGUMENTS
WHERE package_name = 'EMP_MGMT';
패키지 EMP_MGMT 내의 모든 프로시저 및 함수의 인자 정보를 한 번에 조회할 수 있습니다.
4. 관련 뷰와의 비교
ALL_ARGUMENTS는 USER_ARGUMENTS, DBA_ARGUMENTS와 비슷한 구조를 가지며, 권한 범위에 따라 차이를 보입니다.
| 뷰 이름 | 접근 가능 범위 | 사용 목적 | 특징 |
|---|---|---|---|
| USER_ARGUMENTS | 자신이 소유한 객체 | 개인 객체 분석 | 간단한 분석에 유용 |
| ALL_ARGUMENTS | 접근 권한 있는 모든 객체 | 팀 프로젝트, 패키지 구조 분석 | 공유된 패키지 확인에 최적 |
| DBA_ARGUMENTS | 모든 사용자 객체 | 전체 시스템 분석 | DBA 권한 필요 |
5. 성능 및 사용 팁
- 인자 이름은 종종 NULL일 수 있으므로 리턴 값 확인 시 조건에 유의해야 합니다.
- 대소문자 구분이 있기 때문에
UPPER함수를 활용하는 것이 유용합니다. DATA_TYPE만으로는 구조체나 레코드 타입을 구분하기 어려우므로 PL/SQL 소스와 병행 분석이 필요합니다.
6. 결론
ALL_ARGUMENTS 뷰는 단순한 메타데이터 조회를 넘어서, 대규모 PL/SQL 시스템을 효율적으로 관리하고 유지보수하기 위한 핵심 도구입니다. 개발자와 DBA는 이 뷰를 통해 패키지 및 함수의 인터페이스 구조를 명확히 파악하고, 외부 시스템 연동이나 문서 자동화, API 인터페이스 정의 등의 작업을 보다 체계적으로 수행할 수 있습니다.
7. 출처
- Oracle Database Documentation 21c – Data Dictionary Views
- https://docs.oracle.com/en/database/
- 현업 DBA 실무 사례 기반 분석
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_CATALOG() 초보도 이해하는 데이터 딕셔너리 활용법 (0) | 2025.06.18 |
|---|---|
| [ORACLE] ALL_ASSOCIATIONS 뷰 완전 해설 및 실무 활용 전략 (0) | 2025.06.18 |
| [ORACLE] ALL_ALL_TABLES 뷰 완벽 해설 및 실무 활용 가이드 (0) | 2025.06.17 |
| [ORACLE] ALL_ERRORS 뷰 완벽 가이드와 실무 활용법 (0) | 2025.06.16 |
| [ORACLE] ALL_DEPENDENCIES 뷰 완전 분석 및 활용 전략 (0) | 2025.06.16 |