it-swarm.com.de

Wie können Sie feststellen, ob ein PL/SQL-Paket, eine Prozedur oder eine Funktion verwendet wird?

Wie können Sie feststellen, ob ein PL/SQL-Paket, eine Prozedur oder eine Funktion verwendet wird? Gibt es eine Oracle-Tabelle oder -Ansicht, die Statistiken zur Verwendung von PL/SQL-Paketen, -Prozeduren oder -Funktionen enthält?

16
plsql_4_life

Sie können auch versuchen, USER/ALL_source abzufragen:

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

oder

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

Selbstreferenzen müssen Sie ignorieren, aber das sollte leicht zu erkennen sein.

Sie müssen auch die Quelle "view" von user/all_views aus überprüfen. Siehe auch die andere Frage zur Abfrage der Ansichtsquelle.

sie können auch überprüfen, ob ein Paket oder eine Funktion/Prozedur auf oberster Ebene verwendet wird

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

Hinweis: Wechseln Sie user_ mit all_/dba_ nach Bedarf

wenn Sie speziell nach nicht abgerufenen Funktionen suchen, besteht die Möglichkeit, den Code mit aktivierten WARNUNGEN zu kompilieren und dann nach PLW-06002 und LPW-06006 zu suchen

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
14
ShoeLace

Nicht standardmäßig Sie können jedoch die audit - Funktionalität Ihrer Oracle-Datenbank verwenden. Um Ask Tom ist ein langer Thread über das Auditing von Prozeduraufrufen!

5
Tim

Wenn Sie Oracle 11 (R2?) Verwenden, würde ich PL/Scope eine Chance geben. 

In der Dokumentation heißt es: PL/Scope ist ein vom Compiler gesteuertes Werkzeug, das zum Zeitpunkt der Kompilierung von Programmeinheiten Daten zu Bezeichnern im PL/SQL-Quellcode sammelt und in statischen Datenwörterbuch-Ansichten verfügbar macht. Die gesammelten Daten enthalten Informationen zu Kennungstypen, Verwendungen (Deklaration, Definition, Referenz, Aufruf, Zuordnung) und den Speicherort jeder Verwendung im Quellcode.

PL/Scope ermöglicht die Entwicklung leistungsfähiger und effektiver PL/Scope-Quellcode-Browser, die die Produktivität von PL/SQL Für Entwickler erhöhen, indem sie den Zeitaufwand für das Durchsuchen und das Verständnis des Quellcodes minimieren.

Weitere Informationen finden Sie unter http://download.Oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_plscope.htm#g1010526

3

Sie können feststellen, ob ein Objekt Abhängigkeiten hat, indem Sie die Tabelle DBA_DEPENDENCIES abfragen.

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

Diese Abfrage gibt alle Abhängigkeiten in Code zurück, der in der Oracle-Instanz selbst gespeichert ist.

Es wird nicht angezeigt, ob ein Objekt außerhalb der Instanz aufgerufen wird.

1
JordanBean

Sie können Editoren wie Kröte verwenden. Sie listen direkt sowohl die Objekte auf, von denen Ihre Prozedur abhängig ist, als auch Objekte, die auf Ihre Prozedur verweisen.

1
Abhishek Kapoor

Möglicherweise finden Sie auch das pl/sql-Instrumentierungspaket ILO , das für das, was Sie versuchen, nützlich ist.

0
Jim Hudson