Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

As 5 principais consultas SQL demoradas no Oracle


Achei essa instrução SQL um lugar útil para começar (desculpe, não posso atribuir isso ao autor original; encontrei em algum lugar na internet):
SELECT * FROM
(SELECT
    sql_fulltext,
    sql_id,
    elapsed_time,
    child_number,
    disk_reads,
    executions,
    first_load_time,
    last_load_time
FROM    v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
/

Isso localiza as principais instruções SQL que estão atualmente armazenadas no cache SQL ordenadas pelo tempo decorrido. As instruções desaparecerão do cache com o tempo, portanto, pode não ser bom tentar diagnosticar o trabalho em lote da noite anterior quando você chegar ao trabalho ao meio-dia.

Você também pode tentar ordenar por disk_reads e execuções. Execuções é útil porque alguns aplicativos ruins enviam a mesma instrução SQL muitas vezes. Esse SQL pressupõe que você use variáveis ​​de ligação corretamente.

Então, você pode pegar o sql_id e child_number de uma declaração e alimentá-los para este bebê:-
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));

Isso mostra o plano real do cache SQL e o texto completo do SQL.