Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/02/2007, 21h35   #1
Invité de passage
 
Inscription : février 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 23
Points : 1
Points : 1
Par défaut [ASE]Tracer les traitements SQL ?

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
jfmerveille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 23h12   #2
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
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
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 08h10   #3
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 02h26   #4
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 10
Points : 10
Points : 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
Gauthde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 07h55   #5
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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 :
1
2
 
SELECT * FROM syslogins WHERE name = ?
sera transformée dans une proc stockée légère (cad qui n'a pas de correspondance dans les tables systèmes, et n'est visible que depuis la session qui l'a générée), et c'est ensuite cette proc qui est exécutée.

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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 10h40   #6
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 10
Points : 10
Points : 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.
Gauthde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 10h50   #7
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
En 15.0.1 en tous les cas on peut trouver cette information dans monSysSQLText:

Code :
1
2
3
4
5
6
7
 
 SPID   KPID        ServerUserID BatchID     SequenceInBatch SQLText  
 ------ ----------- ------------ ----------- --------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     22   131334182            8        1354               1 CREATE proc DBD322 AS INSERT counterValues (runId, counterId, name, row_name, value) VALUES(?, ?, ?, ?, ?) 
     22   131334182            8        1355               1 DYNAMIC_SQL DBD322:  
     22   131334182            8        1356               1 DYNAMIC_SQL DBD322:  
     22   131334182            8        1357               1 DYNAMIC_SQL DBD323:
Donc on voit la création de la proc, ainsi que son exécution (mais pas les paramètres passés pour l'exécution, évidemment).

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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 14h29   #8
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 10
Points : 10
Points : 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.
Gauthde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 14h38   #9
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 11h39   #10
Membre habitué
 
Inscription : mars 2006
Messages : 293
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 293
Points : 140
Points : 140
Citation:
Envoyé par mpeppler
En 15.0.1 en tous les cas on peut trouver cette information dans monSysSQLText:

Code :
1
2
3
4
5
6
7
 
 SPID   KPID        ServerUserID BatchID     SequenceInBatch SQLText  
 ------ ----------- ------------ ----------- --------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     22   131334182            8        1354               1 CREATE proc DBD322 AS INSERT counterValues (runId, counterId, name, row_name, value) VALUES(?, ?, ?, ?, ?) 
     22   131334182            8        1355               1 DYNAMIC_SQL DBD322:  
     22   131334182            8        1356               1 DYNAMIC_SQL DBD322:  
     22   131334182            8        1357               1 DYNAMIC_SQL DBD323:
Donc on voit la création de la proc, ainsi que son exécution (mais pas les paramètres passés pour l'exécution, évidemment).

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
euh pardon mickael mais c'est l'option sp_configure "sql text pipe max messages" bon c'est qu'une inversion de pipe et max mais .... Histoire de dire que je suis ce que vous dites !!
A+
arona est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h32.


 
 
 
 
Partenaires

Hébergement Web