Подтвердить что ты не робот

SQL для поиска объектов, включая хранимые процедуры, в Oracle

Мне нужно написать несколько sql, которые позволят мне запрашивать все объекты в нашей базе данных Oracle. К сожалению, инструменты, которые нам разрешено использовать, не имеют этого встроенного. В принципе, мне нужно искать все таблицы, процедуры, триггеры, представления, все.

Я знаю, как искать имена объектов. Но мне нужно искать содержимое объекта. т.е. SELECT * FROM DBA_OBJECTS WHERE object_name = '% search string%';

Спасибо, Гленн

4b9b3361

Ответ 1

Я не уверен, понимаю ли вы вас, но чтобы запросить исходный код ваших триггеров, процедур, пакетов и функций, которые вы можете попробовать с помощью таблицы "user_source".

select * from user_source

Ответ 2

Я не уверен, что я вполне понимаю вопрос, но если вы хотите искать объекты в базе данных для определенной строки поиска, попробуйте:

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

Оттуда, если вам нужна дополнительная информация, вы можете просто просмотреть номер объекта/линии.

Ответ 3

Я бы использовал DBA_SOURCE (если у вас есть к нему доступ), потому что если требуемый объект не принадлежит схеме, под которой вы вошли в систему, вы ее не увидите.

Если вам нужно знать функции и Procs внутри пакетов, попробуйте что-то вроде этого:

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

Последняя строка предотвращает возврат всех файлов sys (DBMS_ и др.). Это будет работать в user_source, если вы просто хотите использовать свой собственный материал схемы.

Ответ 4

ALL_SOURCE описывает текстовый источник сохраненных объектов, доступных для текущего пользователя.

Вот одно из решений

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