SQL*Net message from client

Dúvidas, dicas e atualizações sobre o Treinamento Oracle Performance Diagnostics & Tuning.
Post Reply
aspadini

SQL*Net message from client

Post by aspadini » Fri Aug 25, 2017 10:24 am

Portilho, bom dia!

Estou com um processo que está extremamente lento, gerei um tracer da sessão do usuário e o maior evento de espera foi SQL*Net message from client. Segue abaixo:

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 97248 1.68 1.99 0 0 0 0
Execute 98045 13.62 21.78 5 2030 1466 459
Fetch 121008 27.52 29.19 3 8551363 1 70805
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 316301 42.83 52.98 8 8553393 1467 71264

Misses in library cache during parse: 162
Misses in library cache during execute: 26

Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message from client 130482 42.10 982.57
SQL*Net message to client 130482 0.00 0.13
SQL*Net break/reset to client 17994 0.02 7.87
Disk file operations I/O 2 0.00 0.00
db file sequential read 8 0.00 0.00
SQL*Net more data to client 12655 0.00 3.74

Porem tem uma quantidade de Parse grande também? Vi em um artigo antigo que normalmente o from client não é problema, pois é o client esperando por alguma coisa.

Desde já agradeço.

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: SQL*Net message from client

Post by portilho » Mon Aug 28, 2017 2:12 pm

Oi.
O evento "SQL*Net message from client" geralmente é "nada": enquanto uma sessão está sem fazer nada, ela estará incrementando o tempo deste evento. Mas vamos seguir na análise, pois parece que este não é o caso.

Veja que a quantidade de vezes que este evento ocorre é grande (130482) e é EXATAMENTE igual ao evento "SQL*Net message to client". Isto pode significar que o tempo está sendo perdido "indo e voltando" do Oracle. Se for isto, tem que ser pensando um modo de executar a operação "de uma vez", e não neste "vai e vem".

Outro ponto é a ocorrência do evento "SQL*Net break/reset to client" que é um maior indicador de que há um problema de rede ou de processamento no client.

O parse é grande em quantidade (ocorreu 97248 vezes), mas baixo em tempo: 1.99 segundos. O que importa é o tempo. Além disso os "Misses" são baixos em relação à quantidade, o que indica que não são Hard Parses.

Post Reply