Overblog Suivre ce blog
Administration Créer mon blog
7 septembre 2010 2 07 /09 /septembre /2010 01:02


C'est quoi un WAIT_EVENT ?

Dans Oracle 10G les évènements d'attentes ( Wait Events ) sont classées par catégories ( Wait Class ).

Ce premier article ne rentrera pas dans le vif du sujet mais va simplement décrire succinctement le système de nommage des événement d'attentes. (Prochainement des articles plus technique sur les Wait).

Une instance Oracle est composée de Processus d'arrière plan (Background Process) qui permettent d'assurer et de gérer les flux entre mémoire, fichiers, disques, réseaux, ...
Chaque processus oracle a des tâches bien spécifiques à accomplir, exécuter.( voir lien bas d'article )
Si un processus doit exécuter une tâche, et que ce processus doit attendre avant de pouvoir continuer, terminer son action, alors il sera en attente et sera traduit en un Wait_Event.
Les Wait Events permettent de savoir par exemple sur un traitement batch de 60 minutes, les attentes de lectures disques causées par des Full Table Scan, les attentes de lectures disques causées par des verrous, latch,...

Généralement, l'élimination ou la réduction d'un évènement d'attente passe souvent par la modification de requêtes SQL, PL/SQL non optimisées, de paramètres d'initialisations de base, de paramètres liés au système d'exploitation, de la répartition des différents fichiers composant la base (RedoLog, ControlFiles, Datafiles, Archives),...  

Quelques Vues en rapport avec les wait events :

V$EVENT_NAME : Evénements d'attentes classés par catégories (Wait Class) avec propriété de P1,P2,P3.
V$SESSION_WAIT : Evénements d'attentes en cours sur les sessions.
V$SESSION_EVENT : Cumul des événements d'attentes par sessions.

 

Voici une liste des principaux WAIT_EVENTS avec leur WAIT_CLASS respectifs.

 
 SELECT wait_class "WAIT EVENTS CLASS", name "WAIT EVENTS NAME" FROM v$event_name WHERE wait_class NOT IN( 'Other','Idle','Cluster','Scheduler') AND (name like 'control%' OR name like 'log%' OR name like 'db_file%' OR name like 'buffer%') ORDER BY 2; 
WAIT EVENTS CLASS WAIT EVENTS NAME
Concurrency buffer busy waits
Administrative buffer pool resize
User I/O buffer read retry
System I/O control file parallel write
System I/O control file sequential read
System I/O control file single write
User I/O db file parallel read
System I/O db file parallel write
User I/O db file scattered read
User I/O db file sequential read
User I/O db file single write
Configuration log buffer space
System I/O log file parallel write
System I/O log file sequential read
System I/O log file single write
Configuration log file switch (archiving needed)
Configuration log file switch (checkpoint incomplete)
Configuration log file switch (private strand flush incomplete)
Configuration log file switch completion
Commit log file sync

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Les Processus d’arrière plan
Repost 0
Published by Daniel Roesch - dans TUNING
commenter cet article
12 février 2010 5 12 /02 /février /2010 00:17

9i-10G
Statistiques E/S avec la Vue V$FILESTAT

Simples requêtes qui permettent de déterminer l'utilisation des E/S de vos fichiers de données (STATSPACK fournit aussi ces statistiques).

Ex: Les E/S vont nous permettre de voir s'il faut ou non déplacer des fichiers de données sur des disques différents (répartition de charge) afin d'augmenter les performances.


On interroge la vue v$filestat

SQL> SELECT f.phyrds "Lectures Physiques",
            f.phywrts "Ecritures Physiques",
            d.name
     FROM   v$filestat f,
            v$datafile d
     WHERE  d.file#=f.file#
     ORDER BY f.phyrds DESC;



Lectures
Physiques
Ecritures
Physiques
NAME
5558 27 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\SYSTEM01.DBF
1625 221 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\SYSAUX01.DBF
29 28 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\UNDOTBS01.DBF
7 1 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\DATA01.ORA
5 1 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\USERS01.DBF



SQL> SELECT d.tablespace_name "TABLESPACE",
            d.file_name,
            f.phyrds "Lectures Physiques",
            f.phywrts "Ecritures Physiques"
     FROM   v$filestat f,
            dba_data_files d
     WHERE  d.file_id=f.file#
     ORDER BY f.phyrds DESC;


TABLESPACE FILE_NAME Lectures
Physiques
Ecritures
Physiques
SYSTEM C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\SYSTEM01.DBF 5559 43
SYSAUX C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\SYSAUX01.DBF 1628 1183
UNDOTBS1 C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\UNDOTBS01.DBF 30 939
DATA C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\DATA01.ORA 8 2
USERS C:\ORACLE\PRODUCT\10.2.0\ORADATA\DBTEST\USERS01.DBF 6 2



La vue v$filestat

- phyrds = lectures physiques
- phyblkrd = blocs physiques lus
- readtim = durée lectures
- phywrts = écritures physiques
- phyblkwrt = blocs physiques écrits
- writetim = durée écritures


Repost 0
Published by Daniel Roesch - dans TUNING
commenter cet article