2009-05-12 17 views
21

Potrzebuję napisać trochę sql, który pozwoli mi na zapytanie wszystkich obiektów w naszej bazie danych Oracle. Niestety narzędzia, których możemy używać, nie mają tego wbudowanego. Zasadniczo muszę przeszukać wszystkie tabele, procedury, wyzwalacze, widoki, wszystko.SQL do wyszukiwania obiektów, w tym procedur przechowywanych, w Oracle

Wiem, jak wyszukiwać nazwy obiektów. Ale muszę wyszukać zawartość obiektu. tj. SELECT * FROM DBA_OBJECTS WHERE nazwa_obiektu = '% ciąg wyszukiwania% ";

Dzięki, Glenn

+0

dobrym źródłem: http://www.techonthenet.com/oracle/sys_tables/ –

Odpowiedz

15

nie jestem pewien, czy rozumiem cię, ale kwerendy kod źródłowy swojej wyzwalaczy, procedur i funkcji pakietu, można spróbować z tabeli „user_source”.

select * from user_source 
29

Nie jestem pewien, czy do końca rozumiem pytanie, ale jeśli chcesz szukać obiektów w bazie danych dla danego Spróbuj wyszukać ciąg:

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

stamtąd, jeśli potrzebujesz więcej informacji na ciebie może po prostu wyszukać numer obiektu/linii.

+0

jesteś moim bohaterem! –

+0

użyj 'SELECT właściciel, nazwa, wpisz FROM dba_source WHERE instr (UPPER (name), UPPER (': srch_strg'))> 0;' tylko do wyszukiwania w nazwach .. może bardziej praktyczne dla niektórych – mCeviker

9

Używam DBA_SOURCE (jeśli masz do niego dostęp), ponieważ jeśli żądany obiekt nie jest własnością schematu, w którym jesteś zalogowany, nie zobaczysz go.

Jeśli musisz wiedzieć, funkcje i PROC wewnątrz pakietów spróbować czegoś takiego:

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

Ostatnia linia zapobiega wszystkie rzeczy sys (DBMS_ et al) z zwracane. To zadziała w user_source, jeśli chcesz po prostu tworzyć własne schematy.

+0

[PLUS ONE] To właśnie uratowało mój dzień! – GingerHead

1

ALL_SOURCE opisuje źródło tekstu przechowywanych obiektów dostępne dla bieżącego użytkownika.

Oto jeden z roztworem

select * from ALL_SOURCE where text like '%some string%'; 
Powiązane problemy