Localizar string em objetos do banco

Há alguns dias atrás precisei localizar a string PRAGMA AUTONOMOUS_TRANSACTION em todos os objetos do banco de dados. No SQL Server uma busca rápida pela sys.comments ou sys.sql_modules retorna quais objetos possuem essa string em seu código.

No Oracle a busca também é simples, existem 3 views que ajudam essa busca, são elas: ALL_SOURCE, DBA_SOURCE e USER_SOURCE.

  • ALL_SOURCE: lista todos os objetos que possuem a string desejada somente nos objetos que o usuário logado tem acesso.
  • DBA_SOURCE: lista todos os objetos que possuem a string desejada em todos os objetos da instância.
  • USER_SOURCE: lista somente os objetos cujo usuário logado seja dono.

O trecho PL-SQL para buscar os dados são:

SELECT *
FROM ALL_SOURCE
WHERE UPPER(text) LIKE UPPER(‘%PRAGMA AUTONOMOUS_TRANSACTION%’)
ORDER BY type, name, line;

Abaixo o exemplo da busca em minha base de dados encontrando os objetos que possuem essa string:

Feito isso basta editar a function FC_ASS e ir até a linha 6 para verificar a evidência do código.

Leonardo Pedroso

Leonardo Pedroso

Profissional de TI experiência em administração de banco de dados: SQL Server 2000 a 2019, Oracle 11g a 19c, PostgreSQL, MySQL, MongoDB, Cassandra. Atua realizando análise de desempenho, DR e HA, implantação, administração de banco de dados em cluster e implementação de projetos de banco de dados NoSQL (MongoDB, Cassandra), bem como automação de processos utilizando Shell script, Powershell (dbatools), e players de Cloud: Azure e Aws.