Есть ли способ сделать полнотекстовый поиск всех пакетов и процедур Oracle? - PullRequest
30 голосов
/ 31 октября 2008

Я хотел бы найти во всех моих пакетах процедур и функциях определенную фразу.

Поскольку можно получить код для скомпилированных процедур, используя toad, я предполагаю, что полный текст хранится в некоторой таблице словаря данных. Кто-нибудь знает, где это будет?

Большое спасибо

Ответы [ 3 ]

60 голосов
/ 31 октября 2008

Вы можете сделать что-то вроде

SELECT name, line, text
  FROM dba_source
 WHERE upper(text) like upper('%<<your_phrase>>%') escape '\' 
4 голосов
/ 31 октября 2008

Подпрограмма «поиска объекта» жабы будет просматривать ALL_SOURCE (и другие части словаря данных). Конечно, это будет ограничено объектами, которые разрешено видеть подключенному пользователю. Если у вас есть доступ к версии DBA, отлично. Если нет, вы не будете искать все.

Кроме того, если вы вернулись в Oracle 7, или ваша база данных была перенесена из Oracle 7 в 8i или 9i (не уверен примерно в 10 или 11), то источник триггера может не отображаться в представлениях user_source или all_source. Лучше всего проверить. Самый простой способ, которым я нашел, чтобы это появилось, это сделать реальную модификацию - например, добавить пробел - и перекомпилировать триггер.

1 голос
/ 31 октября 2008

Вы имеете в виду использование PL / SQL? Или просто с помощью TOAD? Я знаю, что вы можете использовать функцию «Найти объекты» (или что-то в этом роде) для ручного поиска по всем объектам, таким как процы, таблицы и т. Д ...

...