2010-07-22 5 views
2

quelle colonne dois-je utiliser pour joindre V $ session et V $ sqlarea?

Mon objectif principal est de trouver les 5 premières requêtes avec la plupart des disk_reads et de générer un rapport contenant des informations pertinentes.

Merci

Répondre

1
Ce

SQL ne le JOIN:

select s.sid, s.serial#, a.sql_text 
from v$session s 
join v$sqlarea a on a.hash_value = s.sql_hash_value; 
5

Essayez ci-dessous un, je pense que satisfaire vos besoins. Trouvez les 5 principales requêtes avec la plupart des fichiers disk_reads.

SELECT SESION.SID, 
     SESION.USERNAME, 
     OPTIMIZER_MODE, 
     HASH_VALUE, 
     ADDRESS, 
     CPU_TIME, 
     ELAPSED_TIME, 
     DISK_READS, 
     DIRECT_WRITES, 
     SQL_TEXT 
    FROM V$SQLAREA SQLAREA, V$SESSION SESION 
WHERE SESION.SQL_HASH_VALUE = SQLAREA.HASH_VALUE 
    AND SESION.SQL_ADDRESS = SQLAREA.ADDRESS 
    AND SESION.USERNAME IS NOT NULL 
    AND ROWNUM < 6 
    ORDER BY DISK_READS DESC,ELAPSED_TIME DESC;