Rastreo de sentencias

 Hola compañeros, les tengo la siguiente duda.

 

Como puedo saber a que trigger o Store Procedure pertenece una sentencia SQL, el escenario es el siguiente, durante el monitoreo diario detecto que hay varias sentencias recurrentes entre update, select, etc, el problema es que me han llegado a bloquear la base de datos o a degradar el performance y como comento quiero saber a que Trigger, SP, etc pertenecen.

 

Saludos

Con la vista 'user_source' ya podrías consultar el nombre los objetos que contienen en su DDL un determinado código SQL. Por ejemplo:

SELECT *
FROM user_source
WHERE text like '%SELECT%FROM DUAL%' 

 

No sé si te servirá, pero además he encontrado una interesante combinación de las vistas 'user_source' y 'all_dependencies'  que puede ser útil para consultar los objetos referenciados en DDL's de triggers, procedures, vistas..

 SELECT  a.type,b.name, a.referenced_type, a.referenced_name, b.line, b.text  
 FROM user_source b  
     , (Select *  
        FROM all_dependencies  
        WHERE referenced_name != 'DUAL') a  
 WHERE a.type in ('TRIGGER','VIEW','PROCEDURE','PACKAGE BODY')  
   AND a.referenced_type NOT IN ('NON-EXISTENT','PACKAGE')  
   AND a.referenced_type IN ('TABLE','SEQUENCE')   
   AND a.name = b.name  

Saludos,