sql >> Base de Datos >  >> RDS >> Oracle

Las 5 principales consultas SQL que consumen mucho tiempo en Oracle

Encontré que esta declaración SQL es un lugar útil para comenzar (lo siento, no puedo atribuir esto al autor original; lo encontré en algún lugar de 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
/

Esto encuentra las sentencias de SQL principales que están actualmente almacenadas en la memoria caché de SQL ordenadas por tiempo transcurrido. Las declaraciones desaparecerán del caché con el tiempo, por lo que puede que no sea bueno intentar diagnosticar el trabajo por lotes de anoche cuando llegue al trabajo al mediodía.

También puede intentar ordenar por disk_reads y ejecuciones. Las ejecuciones son útiles porque algunas aplicaciones deficientes envían la misma instrucción SQL demasiadas veces. Este SQL asume que usas las variables de vinculación correctamente.

Luego, puede tomar el sql_id y child_number de una declaración y alimentarlos en este bebé:-

SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));

Esto muestra el plan real del caché de SQL y el texto completo del SQL.