web-dev-qa-db-fra.com

SQL pour rechercher des objets, y compris des procédures stockées, dans Oracle

J'ai besoin d'écrire quelques sql qui me permettront d'interroger tous les objets de notre base de données Oracle. Malheureusement, les outils que nous sommes autorisés à utiliser n'ont pas cela intégré. Fondamentalement, j'ai besoin de rechercher toutes les tables, procédures, déclencheurs, vues, tout.

Je sais comment rechercher des noms d'objets. Mais je dois rechercher le contenu de l'objet. c'est-à-dire SELECT * FROM DBA_OBJECTS WHERE object_name = '% search string%';

Merci, Glenn

25
Glenn Wark

je ne sais pas si je vous comprends, mais pour interroger le code source de vos déclencheurs, procédures, package et fonctions, vous pouvez essayer avec la table "user_source".

select * from user_source
19
Drevak

Je ne suis pas sûr de bien comprendre la question, mais si vous souhaitez rechercher des objets dans la base de données pour une chaîne de recherche particulière, essayez:

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

De là, si vous avez besoin de plus d'informations, vous pouvez simplement rechercher le numéro d'objet/ligne.

30

J'utiliserais DBA_SOURCE (si vous y avez accès) car si l'objet dont vous avez besoin n'appartient pas au schéma sous lequel vous êtes connecté, vous ne le verrez pas.

Si vous avez besoin de connaître les fonctions et les processus à l'intérieur des packages, essayez quelque chose comme ceci:

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

La dernière ligne empêche tous les trucs sys (DBMS_ et al) d'être retournés. Cela fonctionnera dans user_source si vous voulez juste votre propre truc de schéma.

9

j'ai atteint cette question en essayant de trouver toutes les procédures qui utilisent une certaine table

Oracle SQL Developer offre cette fonctionnalité, comme indiqué dans cet article: https://www.thatjeffsmith.com/archive/2012/09/search-and-browse-database-objects-with-Oracle-sql- développeur /

Dans le menu Affichage, choisissez Rechercher un objet DB. Choisissez une connexion DB. Saisissez le nom de la table. Dans Object Types, ne conservez que les fonctions, les procédures et les packages. Dans la section Code, cochez Toutes les lignes source.

enter image description here

4
Newton fan 01

ALL_SOURCE décrit la source de texte des objets stockés accessibles à l'utilisateur actuel.

Voici l'une des solutions

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