hash | ExpoDBA

hash

Filtrar sesiones por HASH_VALUE ejecutado

Cuando tenemos un HASH_VALUE que representa un plan de ejecución no válido, es probable que queramos saber que sesiones son las que ejecutan ese plan en un momento dado.

Para esto, esta consulta puede mostrarnos datos particulares de una sesion que ejecuta un hash_value en particular

select sid, serial#, username, osuser, program, logon_time
from v$session s
where sql_hash_value = '&HASH_VALUE';

Tablas accedidas por FULL

Este query muestra que planes de ejecución acceden a la tabla por full.
También muestra información de performance sobre ese plan como cantidad de lecturas de buffer, de disco y cache_hit ratio.

select distinct s.HASH_VALUE, s.OBJECT_OWNER, s.object_name, executions,
round(sa.DISK_READS/sa.executions,2) PIO, round(sa.buffer_gets/sa.executions,2) LIO, 
decode (
	round(sa.DISK_READS/sa.executions,2),0,-1,
		decode(

Sql a partir de un HASH

Con este Script podemos averiguar el SQL correspondiente a un HASH sin importar la longitud del sql.
Este script es útil cuando el SQL en cuestión tiene más de 1000 caracteres y no puede ser visto correctamente por la v$sql.sql_text

SET LINESIZE 500
SET PAGESIZE 1000
 
SELECT a.sql_text
FROM v$sqltext a
WHERE a.hash_value = &hash
ORDER BY a.piece;