web-dev-qa-db-ja.com

PL / SQLパッケージ、プロシージャまたはファンクションが使用されているかどうかはどのようにしてわかりますか?

PL/SQLパッケージ、プロシージャまたはファンクションが使用されているかどうかはどのようにしてわかりますか? PL/SQLパッケージ、プロシージャ、または関数の使用状況に関する統計を含むOracleテーブルまたはビューはありますか?

18
plsql_4_life

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%';

注意:必要に応じてuser_をall_/dba_に切り替えます

呼び出されていない関数を具体的に探している場合、別のオプションは、WARNINGSをオンにしてコードをコンパイルし、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
15
ShoeLace

デフォルトではありません。ただし、Oracleデータベースのaudit機能を使用できます。 Ask Tom は、プロシージャコールの監査に関する長いスレッドです!

5
Tim

Oracle 11(R2?)を使用している場合は、PL/Scope チャンス。

ドキュメントでは、PL/Scopeは、プログラム単位のコンパイル時にPL/SQLソースコード内の識別子に関するデータを収集し、静的データディクショナリビューで利用できるようにするコンパイラー駆動型ツールです。収集されたデータには、識別子の種類、使用法(宣言、定義、参照、呼び出し、割り当て)、およびソースコード内の各使用法の場所に関する情報が含まれます

PL/Scopeは、強力で効果的なPL/Scopeソースコードブラウザーの開発を可能にし、ソースコードの閲覧と理解に費やす時間を最小限に抑えることで、PL/SQL開発者の生産性を向上させます。

詳しくは http://download.Oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_plscope.htm#g1010526 をご覧ください。

3

DBA_DEPENDENCIESテーブルをクエリすると、オブジェクトに依存関係があるかどうかを確認できます。

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インスタンス自体に格納されているコードの依存関係を返します。

インスタンスの外部でオブジェクトが呼び出されているかどうかはわかりません。

1
JordanBean

Toadなどのエディターを使用できます。プロシージャが依存するオブジェクトと、プロシージャを参照するオブジェクトの両方が直接一覧表示されます。

1
Abhishek Kapoor

また、pl/sqlインストルメンテーションパッケージ [〜#〜] ilo [〜#〜] は、実行しようとしている作業に役立ちます。

0
Jim Hudson