programing

PL/SQL 패키지, 프로시저 또는 함수가 사용되고 있는지 어떻게 알 수 있습니까?

magicmemo 2023. 6. 30. 22:15
반응형

PL/SQL 패키지, 프로시저 또는 함수가 사용되고 있는지 어떻게 알 수 있습니까?

PL/SQL 패키지, 프로시저 또는 함수가 사용되고 있는지 어떻게 알 수 있습니까?PL/SQL 패키지, 프로시저 또는 함수 사용에 대한 통계가 포함된 Oracle 테이블 또는 보기가 있습니까?

USER/ALL_source를 쿼리할 수도 있습니다.

SELECT * FROM all_source
where UPPER(TEXT) like UPPER('%procedure_name%')

또는

SELECT * FROM all_source
where UPPER(TEXT) like UPPER('%package.function_name%')

자기 소개를 무시해야겠지만, 그건 쉽게 찾을 수 있을 겁니다.

또한 user/all_views에서 "view" 소스를 확인해야 합니다.그러나 보기 소스 쿼리에 대한 다른 질문을 참조하십시오.

패키지 또는 최상위 기능/기능이 사용되는지 여부도 확인할 수 있습니다.

select * from all_dependencies
where referenced_name like '%PACKAGE_NAME%';

NB: 필요에 따라 user_를 all_/switch_로 전환합니다.

특별히 호출되지 않은 함수를 찾고 있다면 다른 옵션은 경고를 켠 상태에서 코드를 컴파일한 다음 PLW-06002 및 LPW-06006을 찾는 것입니다.

exec DBMS_WARNING.add_warning_setting_cat('ALL','ENABLE','SESSION')
create or replace function x return number
as
procedure y is begin null; end;
begin
return 0;
return 1;
end;

show errors

Errors for FUNCTION X:

LINE/COL ERROR
-------- -----------------------------------------------------------------
1/1      PLW-05018: unit X omitted optional AUTHID clause; default value DEFINER used
3/1      PLW-06006: uncalled procedure "Y" is removed.
6/1      PLW-06002: Unreachable code

기본값은 아닙니다.그러나 오라클 데이터베이스의 감사 기능을 사용할 수 있습니다."물어보다 Tom"은 절차 호출의 감사에 대한 긴 스레드입니다!

오라클 11(R2?)을 사용 중이라면PL/Scope기회

PL/Scope는 프로그램 단위 컴파일 시 PL/SQL 소스 코드의 식별자에 대한 데이터를 수집하여 정적 데이터 사전 보기에서 사용할 수 있도록 하는 컴파일러 기반 도구입니다. 수집된 데이터에는 식별자 유형, 사용(선언, 정의, 참조, 호출, 할당) 및 소스 코드의 각 사용 위치에 대한 정보가 포함됩니다.

PL/Scope는 소스 코드를 탐색하고 이해하는 데 소요되는 시간을 최소화하여 PL/SQL 개발자의 생산성을 향상시키는 강력하고 효과적인 PL/Scope 소스 코드 브라우저를 개발할 수 있습니다.

자세한 내용은 http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_plscope.htm#g1010526 에서 확인할 수 있습니다.

DBA_DEPLINCES 테이블을 쿼리하여 개체에 종속성이 있는지 확인할 수 있습니다.

SELECT OWNER, 
       NAME, 
       TYPE 
  FROM SYS.DBA_DEPENDENCIES 
 WHERE REFERENCED_OWNER = '<your object owner>' 
   AND REFERENCED_NAME = '<your object name>'
   AND REFERENCED_TYPE IN ('PACKAGE', 'PROCEDURE', 'FUNCTION');

이 쿼리는 Oracle 인스턴스 자체 내부에 저장된 코드의 모든 종속성을 반환합니다.

인스턴스 외부에서 호출된 개체가 있는지 여부는 표시되지 않습니다.

Toad와 같은 Editor를 사용할 수 있습니다.절차가 종속된 개체와 절차를 참조하는 개체가 모두 직접 나열됩니다.

또한 pl/sql 계측 패키지 ILO가 작업에 유용할 수도 있습니다.

언급URL : https://stackoverflow.com/questions/4670164/how-can-you-tell-if-a-pl-sql-package-procedure-or-function-is-being-used

반응형