Como procurar por código dentro de objetos no Oracle

Quando nos deparamos com sistemas desorganizados, mas localizar trechos de código-fonte é simples. Veja como procurar por código dentro de objetos no Oracle.

Como procurar por código dentro de objetos no Oracle
Como procurar por código dentro de objetos no Oracle

Em sistemas complexos manter a organização e arquitetura de procedures, functions e outros objetos do Oracle é um completo desafio e para piorar temos a necessidade de procurar por trechos de código-fonte nesta bagunça. Veja como procurar por código dentro de objetos no Oracle.

Já me deparei com sistemas com mais de 1.000 procedures e outras dezenas de functions.

Um verdadeiro caos, já que o sistema não possuía nenhum tipo de padronização ou arquitetura para os objetos do banco.

Mas nem tudo está perdido, já que no Oracle podemos pesquisar de maneira bem simples por estes objetos.

Como procurar por código dentro de objetos no Oracle: o problema

Vamos contextualizar um problema real, por qual passei semanas atrás.

Um determinado dia precisei pesquisar em todas as procedures e/ou functions onde uma determinada string era utilizada.

Eram centenas de procedures e mais dezenas de functions e ficar procurando uma a uma seria trabalho de várias horas (além de ser muito maçante).

Mas como dentro do Oracle tudo acaba por se reduzir a consultas (SELECT) temos uma solução muito prática e eficiente.

Como procurar por código dentro de objetos no Oracle: a solução

Por excelência o Oracle armazena o conteúdo destes objetos dentro de uma tabela e assim podemos consulta-la (desde que o seu usuário tenha permissão para isso).

Veja um exemplo:

Vamos consultar em todas as procedures e/ou functions quais tem a ocorrência da string “ERRO”:

SELECT * 
FROM all_sources
WHERE text LIKE '%ERRO%';

O exemplo acima ira percorrer os objetos buscando pela string informada, levando em conta que é case-sensitive irá encontrar a expressão exata e os ‘%’ em ambos os lados irá ampliar o espectro da busca.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.