Performance | ExpoDBA

Performance

Oracle Scritps de Tuning de Base, Objetos, procesos, locks, waits, estadísticas, Memoria, statpack, AWR

PGA ocupada por sesion

Muestra la cantidad de PGA reservada y utilizada por un proceso. Además muestra la cantidad máxima de PGA que utilizó en todo su ciclo de vida.
select spid, program, trunc(pga_used_mem/1024/1024) USED, 
trunc(pga_alloc_mem/1024/1024) ALLOC , trunc(pga_max_mem/1024/1024) MAX 
from v$process 
order by pga_alloc_mem desc;

Jobs running

Muestra los jobs que se están ejecutando actualmente.
Por cada job indica datos de la sesion y proceso del job, ultima ejecución, horario de inicio de la ejecución actual, el estado del mismo y el what de lo que está ejecutando.

alter session set nls_date_format='dd/mm/yyYY hh24:mi:ss';
set lines 100
set pages 150
col event for a30

Bloques que generan enq: TX - row lock contention

Muestra los bloques con alta contención de updates.

Se muestran con la espera "enq: TX - row lock contention".

Solo muestra la cantidad de sesiones que están en espera por ese bloque, y no sesiones que actualmente tengan el LOCK.

SELECT object_name,    ROW_WAIT_FILE#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#, count(9) cant, min(seconds_in_wait) min_time, max(seconds_in_wait) max_time
from v$session b, dba_objects o
where o.object_id=ROW_WAIT_OBJ#

Dump de un bloque

Genera un dump de un bloque en particular.

El Dump genera un archivo .trc el cual puede ser leído en texto plano.

Nomenclatura del comando:

alter system dump datafile <file_id> block <Block_id>;

Estadísticas de esperas por sesion

Esta consulta muestra los tiempos de espera que una sesion en cada uno de los eventos que estuvo.
La vista v$session_wait muestra por cada SID activo en la base, estadísticas sobre sus estados.

select event, round(sum(time_waited)/100,2)
from v$session_event
where sid = &sid
group by event
order by 2; 

Identificar quien bloquea un objeto (ORA-00054)

Esta vista Muestra información importante sobre los usuarios que mantienen un LOCK sobre un objeto específico.
Especial para determinar quien bloquea un objeto cuando recibimos un error:
ORA-00054: resource busy and acquire with NOWAIT specified

set linesize 200
col pogram format a40
col program format a50
col machine format a40
col osuser format a10
col username format a12

select s.inst_id, s.sid, s.serial#, lo.PROCESS, s.osuser,

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(

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(

Explain plan en memoria

Cuando ejecutamos una consulta, Oracle genera un plan de ejecución y lo asocia a un Hash.
Esta query sirve para ver el plan de ejecución que armó Oracle en Memoria para ese hash.

set linesize 163
set pagesize 1000
col operation format a40
 
select  b.id, b.operation ||' '||b.options operation, b.object_name, b.BYTES, b.cost, PARTITION_START, PARTITION_STOP, a.EXECUTIONS,a.child_number,b.parent_id