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;
Stay tuned! Non solo Query per vedere le sessioni ATTIVE
Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL
Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin
Per chi ancora non lo avesse fatto, consigliamo di salvare tra i propri bookmark questo sito, così da avere sempre a portata di mano le nsotre soluzioni ai problemi più comuni su database, in particolar modo, database oracle.
- Query per vedere informazioni delle sessioni ATTIVE che consumano più risorse
- Query per vedere i consumi di risorse di tutte le sessioni ATTIVE
- Query per vedere i consumi di risorse delle sessioni attive
- Query per vedere l’utilizzo di risorse delle SESSIONI ATTIVE
- Query per vedere i dettagli di un statement da SID
- Query per estrarre statement da un SQL_ID successivo EXPLAIN PLAN FOR dello statement
- Query per vedere se è cambiato il piano d’accesso ai dati – PLAN_HASH_VALUE
- Query per estrarre lo statement da SQL_ID