|
| |
4. Autres Conseils
Avant de regarder les conseils suivants, Oracle (ou un autre BD) doit être bien
installé, la taille de cache bien calculée et les disques correctement
structurés pour éviter les bourrages.
- si le trafic vers le disque est élevé pendant une recherche, cela signifie
alors normalement une indexation médiocre des tables de BD. Dans ce cas, le
temps réel est beaucoup plus important que le temps de CPU, en raison de
l’attente du disque. Parfois, l'exécution peut être améliorée en réorganisant le
SQL pour employer d'autres index.
- si le temps réel est plus important que le temps de CPU mais que le trafic
vers le disque est bas, cela signifie alors des contentions pour une ressource
autre que le disque, par exemple un lock. C’est souvent le cas avec les
commandes SQL type : update/insert/delete.
- si le temps de CPU est proche du temps réel mais le trafic vers le disque est
bas, cela signifie alors que la commande SQL a pris une voie d’exécution étrange
dans la BD. Il faut restructurer le SQL.
Un autre bon conseil est de placer des commandes SQL dans des queues différentes
selon les temps d’exécution. Ceci n’est pas toujours praticable avec les
serveurs d’application. Mais un SQL utilisé pour générer un rapport a pu être
placé dans une file d'attente spéciale pour éviter de bloquer des demandes
interactives des EJBs et des Servlets.
Appendix 1 : TKProf
Procédure pour permettre la trace de SQL pour des utilisateurs sur votre base de
données:
- Obtenir le SID et la SERIAL# pour le processus que vous voulez tracer.
SQL> select sid, serial# from sys.v_$session where ...
SID SERIAL#
8 13607
- Permettre le tracé du processus que vous avez choisi:
SQL> ALTER SYSTEM SET TIMED_STATISTICS = TRUE;
SQL> execute dbms_system.set_sql_trace_in_session(8, 13607, true);
- Executer les commandes nécessaires pour démontrer le problème
- Arrêter de tracer pour le processus choisi:
SQL> execute dbms_system.set_sql_trace_in_session(8,13607, false);
SQL> ALTER SYSTEM SET TIMED_STATISTICS = FALSE;
- Rechercher pour le fichier de trace dans USER_dump_dest
$ cd /app/oracle/admin/oradba/udump
$ ls –ltr
total 8
-rw-r----- 1 oracle dba 2764 Mar 30 12:37 ora_9294.trc
- Lancer TKPROF pour analyser la trace
$ tkprof ora_9294.trc x EXPLAIN=monitor/oramon SYS=NO
- Regarder ou imprimer le dossier de rendement x.prf.
|