it-swarm.com.de

SQL zum Durchsuchen von Objekten, einschließlich gespeicherter Prozeduren, in Oracle

Ich muss eine SQL schreiben, mit der ich alle Objekte in unserer Oracle-Datenbank abfragen kann. Leider haben die Werkzeuge, die wir verwenden dürfen, dies nicht eingebaut. Grundsätzlich muss ich alle Tabellen, Prozeduren, Trigger, Views, alles durchsuchen.

Ich kann nach Objektnamen suchen. Aber ich muss nach dem Inhalt des Objekts suchen. SELECT * FROM DBA_OBJECTS WHERE object_name = '% search string%';

Danke, Glenn

25
Glenn Wark

ich bin nicht sicher, ob ich Sie verstehe, aber um den Quellcode Ihrer Trigger, Prozeduren, Pakete und Funktionen abzufragen, können Sie die Tabelle "user_source" verwenden.

select * from user_source
19
Drevak

Ich bin nicht sicher, ob ich die Frage richtig verstanden habe, aber wenn Sie Objekte in der Datenbank nach einer bestimmten Suchzeichenfolge durchsuchen möchten, versuchen Sie Folgendes:

SELECT owner, name, type, line, text 
FROM dba_source
WHERE instr(UPPER(text), UPPER(:srch_str)) > 0;

Wenn Sie weitere Informationen benötigen, können Sie einfach die Objekt-/Zeilennummer nachschlagen.

30

Ich würde DBA_SOURCE verwenden (wenn Sie Zugriff darauf haben), da das Objekt, unter dem Sie angemeldet sind, nicht in dem Schema enthalten ist, unter dem Sie angemeldet sind, nicht angezeigt wird.

Wenn Sie die Funktionen und Prozesse in den Paketen kennen müssen, versuchen Sie Folgendes:

select * from all_source
 where type = 'PACKAGE'
   and (upper(text) like '%FUNCTION%' or upper(text) like '%PROCEDURE%')
   and owner != 'SYS';

Die letzte Zeile verhindert, dass das gesamte Systemmaterial (DBMS_ et al.) Zurückgegeben wird. Dies funktioniert in user_source, wenn Sie nur Ihre eigenen Schemasachen möchten.

ich bin auf diese Frage gestoßen, als ich versuchte, alle Prozeduren zu finden, die eine bestimmte Tabelle verwenden

Oracle SQL Developer bietet diese Funktion, wie in diesem Artikel erläutert: https://www.thatjeffsmith.com/archive/2012/09/search-and-browse-database-objects-with-Oracle-sql- Entwickler /

Wählen Sie im Menü Ansicht die Option DB-Objekt suchen. Wählen Sie eine DB-Verbindung. Geben Sie den Namen der Tabelle ein. Behalten Sie bei Objekttypen nur Funktionen, Prozeduren und Pakete. Aktivieren Sie im Abschnitt Code die Option Alle Quellzeilen.

enter image description here

4
Newton fan 01

ALL_SOURCE beschreibt die Textquelle der gespeicherten Objekte, auf die der aktuelle Benutzer zugreifen kann.

Hier ist eine der Lösungen

select * from ALL_SOURCE where text like '%some string%';
2