|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 23 ![]() |
Comment tracer des traitements (qui les exécutent, quand, l'ordre SQL, la consommation) appelant des ordres SQL (procédures stockées, ligne de commande (à la main), etc. - tout ce qui se passe sur le DATASERVER)
Merci pour votre aide Architecture technique: ASE 12.5, HP Unix |
|
|
00
|
|
|
#2 |
![]() ![]() |
C'est selon ce que vous souhaitez obtenir:
- Via l'audit - via sp_showplan - via MS/HS - via table MDA
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql Administrateur SAP Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums ! |
|
|
00
|
|
|
#3 |
![]() ![]() |
L'audit peut être une bonne option, mais il est clair que pour un serveur relativement actif la charge peut être importante, et le volume à dédier aux devices de la base sybsecurity peuvent être conséquents (en taille!)
Une alternative consiste à utiliser les tables MDA, et en particulier les tables monSysSQLText, monSysPlanText et monSysStatement. Ces tables sont des vues virtuelles conçuent comme un "pipe" - ASE maintient les derniers X enregistrements (configurable via sp_configure) dans le pipe, et quand on lis le pipe on le vide (donc deux select de suite ne ramènent pas la même information). On peut donc créer un script simple qui va lire ces tables et placer l'information dans une "vraie" table pour historiser l'information pour du post-traitement. Evidemment ce n'est pas gratuit - extraire cette information et la stocker dans une ou plusieurs tables consomme du CPU et des IOs, ce qui peut affecter les perfs d'un serveur s'il est déjà chargé. Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 10 ![]() |
Bonjour
Pour connaître la requête en cours ou passé, tu peux utiliser cette commande: dbcc sqltext(spid). Avant fais un dbcc traceon(3604). Cependant pour faire des mesures complètes (cpu, IO...) le couple monitor/historical serveur est bien, mais fastidieux à mettre en place. Si tu es en version 12.5.3, les MDA tables sont assez interessantes car il est possible de faire des jointure entre les différentes tables pour lier les différents compteurs de performance offert par ces tables. Quant à l'audit (sybsecutity), Il est plutôt indiqué pour faire de la surveillance sur le serveur. Qui fait quoi, comment et quand. D'ailleurs au passage, si vous avez essayé de faire des captures de code sql sur un serveur sur lequel se connecte des applications web en JTDS/JCONNECT et que vous obtenez des choses qui ressemblent à ça: Mesure HS/Mon serveur: Rien MDA Table: dynamic code..... et avec l'audit: Create proc jtds00223 .... code sql ... Comment avez-vous interprétés les informations? Le create proc correspond-t-il à une pré fetch du JTDS ou du jconnect? L'architecture est du type Tomcat, Hybernet, Sybase 12.5.3. Merci d'avance |
|
|
00
|
|
|
#5 | ||
![]() ![]() |
Le "create proc jtds..." correspond à la création de la proc stockée "lightweight" générée par jConnect lorsque l'option DYNAMIC_PREPARE est mise à vrai.
Dans cette situation une requête qui comprends des "placeholders" (p.ex. Code :
Cette partie (la création de la proc) n'est peut-être pas trappée par les tables MDA (en tout cas monProcessSQLText). Je ne sais pas si cette création est trappèe dans monSysSQLText, mais j'imagine que c'est possible. Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 10 ![]() |
J'ai réussi à capturer la création de procédure 'light' uniquement en utilisant sybsecurity. Monitor seveur et les MDA tables ne signale que l'exécution d'un code dynamique.
Merci pour ces infos. |
|
|
00
|
|
|
#7 | ||
![]() ![]() |
En 15.0.1 en tous les cas on peut trouver cette information dans monSysSQLText:
Code :
Un rappel - monSysSQLText est une table de type "pipe", cad qu'elle contient un nombre limité de lignes (c.f. paramètre de config "sql text max pipe messages"), et qu'elle se vide lorsqu'on fait un SELECT dedans. Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2006 Messages : 10 ![]() |
Bonjour,
Désolé, je n'ai pas pu suivre cette discussion. Un accident de moto m'a distrait dans ma tâche. Depuis le dernier message, j'ai poussé un peu plus loin l'utilisation des MDA Tables et je suis tombé sur un outil développé par Jean-Paul Martin. Il y a tout une partie sur la récupération du code SQL (ASE_monlogger, disponible sur le site Sybase dans la partie codexchange https://www.codexchange.sybase.com/). Et Effectivement on retrouve bien les "create" et les appels des fonctions jtdsxxx. En revanche, il est presque impossible de les liées à un plan d'optimisation. Je vais les extraire une par une et voire ce que je pourrais fairte avec ça. Merci de ta réponse. |
|
|
00
|
|
|
#9 |
![]() ![]() |
Merci de ces précisions - et j'espère que tu te remets bien de ton accident!
Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
00
|
|
|
#10 | |||
|
Membre habitué
![]() Inscription : mars 2006 Messages : 293 ![]() |
Citation:
A+ |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com