web-dev-qa-db-fra.com

Existe-t-il un moyen d'effectuer une recherche en texte intégral de tous les packages et procédures Oracle?

Je voudrais rechercher à travers tous mes packages de procédures et fonctions pour une certaine phrase.

Puisqu'il est possible de récupérer le code des procédures compilées à l'aide de crapaud, je suppose que le texte intégral est stocké dans une table de dictionnaire de données. Est-ce que quelqu'un sait où ce serait?

Merci beaucoup

33
George Mauer

Vous pouvez faire quelque chose comme

SELECT name, line, text
  FROM dba_source
 WHERE upper(text) like upper('%<<your_phrase>>%') escape '\' 
65
Justin Cave

La routine de "recherche d'objet" de Toad examinera ALL_SOURCE (et d'autres parties du dictionnaire de données). Bien sûr, cela sera limité aux objets que l'utilisateur connecté est autorisé à voir. Si vous avez accès à la version DBA, tant mieux. Sinon, vous ne chercherez pas tout.

De plus, si vous revenez à Oracle 7 ou que votre base de données a été migrée d'Oracle 7 vers 8i ou 9i (pas sûr de 10 ou 11), la source du déclencheur peut ne pas apparaître dans les vues user_source ou all_source. Mieux vaut vérifier. Le moyen le plus simple que j'ai trouvé pour le faire apparaître est de faire une modification réelle - ajouter un espace, par exemple - et recompiler le déclencheur.

4
Jim Hudson

Voulez-vous dire en utilisant PL/SQL? Ou tout simplement en utilisant TOAD? Je sais que vous pouvez utiliser la fonction "Rechercher des objets" (ou quelque chose comme ça) pour rechercher manuellement à travers tous les objets comme les procs, les tables, etc ...

1
Mark