Mon application, qui utilise une base de données Oracle, est lente ou semble s'être complètement arrêtée.
Comment puis-je savoir quelles sont les requêtes les plus coûteuses, afin d'approfondir mes recherches ?
Mon application, qui utilise une base de données Oracle, est lente ou semble s'être complètement arrêtée.
Comment puis-je savoir quelles sont les requêtes les plus coûteuses, afin d'approfondir mes recherches ?
Vous pouvez utiliser la vue v$sql_monitor pour trouver les requêtes qui s'exécutent pendant plus de 5 secondes. Cette fonction n'est peut-être disponible que dans les versions Enterprise d'Oracle. Par exemple, cette requête identifiera les requêtes qui s'exécutent lentement dans mon service TEST_APP :
select to_char(sql_exec_start, 'dd-Mon hh24:mi'), (elapsed_time / 1000000) run_time,
cpu_time, sql_id, sql_text
from v$sql_monitor
where service_name = 'TEST_APP'
order by 1 desc;
Notez que elapsed_time est en microsecondes, donc / 1000000 pour obtenir quelque chose de plus lisible.
Vous pouvez générer un rapport AWR (référentiel automatique des charges de travail) à partir de la base de données.
Exécuté à partir de la ligne de commande SQL*Plus :
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql
Lisez le document relatif à la façon de générer et de comprendre un rapport AWR. Il donnera une vue complète des performances de la base de données et des problèmes de ressources. Une fois que nous serons familiarisés avec le rapport AWR, il sera utile de trouver le meilleur SQL qui consomme des ressources.
De plus, dans l'interface utilisateur du 12C EM Express, nous pouvons générer un AWR.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.