Query per vedere informazioni delle sessioni ATTIVE che consumano più risorse

Query per vedere informazioni delle sessioni ATTIVE che consumano più risorse

.

Con l’articolo Query per vedere i dettagli delle sessioni ATTIVE
che consumano più risorse macchina,
forniamo una query per analizzare le sessioni ATTIVE
che utilizzano maggiormente le risorse a disposizione del database.

Inoltre selezioniamo i campi SID,
SQL_ID,
l’utente con cui viene aperta la sessione,
l’utente del sistema operativo
e l’evento associato alla sessione.

Infine vediamo l’utilizzo di risorse
oltre al numero di esecuzione,
ossia quante volte è stata eseguita e la durata di attesa.

I campi selezionati sono:


INST_ID – Numero identificativo dell’istanza del RAC.
SID – Numero identificativo della sessione.
USERNAME – Nome utente con cui è stata eseguita la sessione.
SQL_ID – Numero identificativo dello statement
PROGRAM – Software da cui è partita la sessione
MACHINE – Nome macchina da cui è partita la sessione
OSUSER – Nome utente del sistema operativo da cui è partita la sessione
EXECUTIONS – Numero totale di esecuzione dello statement
BUFFER_GETS – Memoria utilizzata effettuate da ogni singola esecuzione
DISK_READS – Letture disco effettuate da ogni singola esecuzione
ELAPSED_TIME – Tempo di esecuzione di ogni singola esecuzione

Le informazioni sono recuperate dalle tabelle
GV$SESSION e
GV$SQL,
le quali sono messe in relazione dalle JOIN
a.INST_ID=b.INST_ID,
a.SQL_ID=b.SQL_ID,
a.SQL_CHILD_NUMBER=b.CHILD_NUMBER.

Infine filtriamo i record per sessioni attive e
per un valore di BUFFER_GETS per esecuzione
superiore a 90000 e
per un valore di DISK_READS per esecuzione
superiore a 5000.

col inst_id for 9999 col sid for 99999 col LAST_LOAD_TIME for a22 col buff_gets for 99999999999 col executions for 99999999999 col sql_text for a100 wrap set long 10000 col osuser for a10 col machine for a12 col buff_get for 99999999999 col program for a34 col Secs for 999,99 col username for a12 col disk for 999999 col cld for 99 col exec for 999999 set linesize 400 col Is for 9 select a.inst_id as I , a.sid, a.username , a.sql_id, a.program ,machine , osuser,executions as exec , BUFFER_GETS/(executions+1) as buff_get, disk_reads/(executions+1) as disk, ((ELAPSED_TIME)*power(10,-6))/(Executions+1) as Secs, buffer_gets/(fetches+0.1) as "Buf/Fetch" from gv$session a , gv$sql b where a.inst_id=b.inst_id and a.sql_id=b.sql_id and a.sql_child_number=b.child_number and status='ACTIVE' and service_name not like 'SYS%' and username not like 'SYS%' and ( BUFFER_GETS/(executions+1) > 90000 or disk_reads/(executions+1)> 5000 ) order by a.sql_id;

Lascia un commento

Wordpress Social Share Plugin powered by Ultimatelysocial