Meu aplicativo, que usa um banco de dados Oracle, está lento ou parece ter parado completamente.
Como posso descobrir quais consultas são mais caras, para que eu possa investigar mais a fundo?
Este mostra o SQL que está atualmente "ATIVO": -
select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
from v$sqltext_with_newlines t,V$SESSION s
where t.address =s.sql_address
and t.hash_value = s.sql_hash_value
and s.status = 'ACTIVE'
and s.username <> 'SYSTEM'
order by s.sid,t.piece
/
Isso mostra bloqueios. Às vezes, as coisas estão lentas, mas é porque ele está bloqueado esperando por um bloqueio:
select
object_name,
object_type,
session_id,
type, -- Type or system/user lock
lmode, -- lock mode in which session holds lock
request,
block,
ctime -- Time since current mode was granted
from
v$locked_object, all_objects, v$lock
where
v$locked_object.object_id = all_objects.object_id AND
v$lock.id1 = all_objects.object_id AND
v$lock.sid = v$locked_object.session_id
order by
session_id, ctime desc, object_name
/
Este é um bom para localizar operações longas (por exemplo, varreduras completas de tabela). Se for por causa de muitas operações curtas, nada aparecerá.
COLUMN percent FORMAT 999.99
SELECT sid, to_char(start_time,'hh24:mi:ss') stime,
message,( sofar/totalwork)* 100 percent
FROM v$session_longops
WHERE sofar/totalwork < 1
/
alter system kill session
conforme descrito aqui: docs.oracle.com/cd/B28359_01/server.111/b28310/…Tente fazer isso, ele apresentará consultas atualmente em execução por mais de 60 segundos. Observe que ele imprime várias linhas por consulta em execução se o SQL tiver várias linhas. Olhe para o sid, número de série para ver o que está junto.
fonte
v $ session_longops
Se você procurar sofar! = Totalwork, verá os que não foram concluídos, mas as entradas não são removidas quando a operação é concluída, portanto, você também pode ver muito histórico lá.
fonte
fonte
Você pode gerar um relatório AWR (repositório automático de carga de trabalho) do banco de dados.
Execute a partir da linha de comando SQL * Plus:
Leia o documento relacionado a como gerar e entender um relatório AWR. Ele dará uma visão completa do desempenho do banco de dados e dos problemas de recursos. Assim que estivermos familiarizados com o relatório AWR, será útil encontrar o SQL superior que está consumindo recursos.
Além disso, no 12C EM Express UI, podemos gerar um AWR.
fonte
Você pode verificar os detalhes das consultas de longa duração, como% concluída e tempo restante, usando a consulta abaixo:
Para obter a lista completa de etapas de solução de problemas, você pode verificar aqui: Solucionando problemas de sessões de longa duração
fonte
fonte