29 novembre 2012

Utilitaire db2top : suivre l'activité d'une base DB2

DB2 fournit sous Unix une interface permettant de suivre l'activité de la base : db2top
Ci joint un lien vers un manuel assez pratique, avec des cas d'usage.





Pour avoir le rendu en couleurs, faire un :
export TERM=xterm

Puis appeler l'exécutable :
db2top

La vue dynamic SQL accessible par "D" permet de consulter les ordres SQL dynamiques en cours.
A noter : 
  • on n'y trouve pas les requêtes statiques (sans champs variabilisés - stockées dans des bibliothèques DB2 lors du BIND),
  • Pour changer le tri , faire "z" ou "Z",
  • Pour voir l'ordre complet, faire "L" puis indiquer l'identifiant "HashValue" de la requête,
  • L'option -V permet de spécifier le schéma par défaut - ce qui peut être utile à db2expln et db2exfmt (option "e" et "x" pour l'analyse du plan d'accès de la requête).
  • Pour rafraichir les données (purger le tampon) des "dynamic sql", faire "R".
Il y a d'autres vues, comme "T" pour les tables accédées ou "U" pour les verrous actifs.

Des options par défaut peuvent être spécifiées dans $HOME/.db2toprc.

Vous pouvez collecter les données en batch - ici pendant 5 minute avec un intervalle de 30 secondes :
db2top -C -d hradev -b m -m 5 -i 30 -f $TMP/db2top.file

[14:41:32] Starting DB2 snapshot data collector, collection every 30 second(s), max duration 5 minute(s), max file growth/hour 100.0M, hit <CTRL+C> to cancel...
[14:41:32] Overridding previous occurence of '/hradev/hraccess/txt/tmp/db2top.file'
[14:42:02] 1.4M written, time 30.112, 173.8M/hour
...

[14:46:33] 8.5M written, time 300.962, 103.0M/hour
[14:47:03] Max duration reached, 8.5M bytes, time was 331.062...
[14:47:03] Snapshot data collection stored in '/hradev/txt/tmp/db2top.file'
Exiting...


Puis extraire les données du fichier :
db2top -d hradev -b l -f $TMP/db2top.file
Time;Application_Handle(Stat);Cpu%_Total;IO%_Total;Mem%_Total;Application_Status;Application_Name;Delta_RowsRead/s;Delta_RowsWritten/s;Delta_IOReads/s;Delta_IOWrites/s;Delta_TQr+w/s;Sess_Memory;Assoc._Agents;Paral._Degree;Lockwait_(sec);Locks_Held;Sorts_(sec);Log_Used;Delta_RowsSelect/s;Fetch_Count(Stmt);Dynamic_SQL;Static_SQL;#of_XQueries;Os_User;DB_User;Client_NetName;Client_Platform;Status_ChTime;Time_InStatus;IoType_(Data/Index/Temp);Sorts_Overflows;Hash_Join_Overflows;Client_Pid;Node_Number;Last_Operation;TimeTo_Connect;Session_Cpu;Statement_Cpu;Max Cost_Estimate;Wkd_Id;Recent_Cpu[1]
14:43:33;18528;0.00%;2.08%;4.76%;UOW Waiting in the application;db2jcc_applicat;43;20;713;0;0;262144;1;1;0;0;0;0;25;0;3613;354;0;DIGIX;DIGIX;digix;ABCD;14:43:04;28.081875;ddddddddddddddddddd;0;0;0;0;Static Commit;1.340;0.240599;0.000008;0;1;0.000
14:44:33;18528;0.00%;30.77%;4.40%;UOW Waiting in the application;db2jcc_applicat;0;0;16;0;0;262144;1;1;0;0;0;0;0;0;3639;362;0;
DIGIX;DIGIX;digix;ABCD;14:44:04;29.102762;ddddddddddddddddddd;0;0;0;0;Static Commit;1.340;0.245410;0.000012;0;1;0.000
...

  
Avec l'option -A on a un résumé orienté performance par application.

 Rank Application_Handle(Stat)        Percentage fromTime toTime                   sum(Cpu%_Total)
----- ------------------------------ ----------- -------- --------- ------------------------------
    1 18528                             50.0000% 14:44:33 14:46:03                          100000
    2 5288                              50.0000% 14:44:33 14:46:03                          100000
    3 20799                              0.0000% 14:44:33 14:46:03                               0


Merci à Michel pour le tuyau.

Aucun commentaire:

Enregistrer un commentaire