본문 바로가기
Database/Oracle

[ORACLE] ALL_ARGUMENTS 뷰 완전 분석과 실무 활용법

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

 

오라클 ALL_ARGUMENTS 뷰 완전 분석과 실무 활용법
[Oracle] ALL_ARGUMENTS

 

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_ARGUMENTSUSER_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. 출처

728x90