SelectEtoile : Base de connaissance SGBD

Posts Tagged 'sysprocesses'

Mise en place Trace SPID

Cet article explique comment tracer un processus soit connu (spid) soit inconnu (via un trigger de login)

 

La commande utiliser pour tracer un processus et le rediriger vers un fichier est 'set tracefile' (ASE 15)

 

Syntaxe :

set tracefile "nom du fichier" for spid (ou spid correspond à la colonne spid de la table master..sysprocesses)

 

La procédure système 'sp_helpapptrace' permet de visualiser les traces mises en place sur tel ou tel spid :

 traced_spid tracer_spid trace_file
 ----------- ----------- ---------------------
 1769        1769        /tmp/hedge_trace_1769

 

Exemple de trace d'un processus connu (ex : spid 1356) :

set tracefile "/tmp/trace_spid_1356" for 1356

set show_sqltext on

go

 

Il existe différentes options pour tracer le processus. Ici, le show_sqltext permet de tracer les ordres sql lancés par le processus 1356.

Les différentes options sont décrites à la fin de l'article.

Read more: Mise en place Trace SPID

Locks fantomes sous SYBASE ASE

Lock fantomes

 

Symptome

 

Il peut arriver que l'on ait suite à une erreur SYBASE et/ou une stacktrace qu'un process disparaisse sans déverrouiller les tables sur lesquelles il a posé des verrous.

Cela se traduit par des lignes dans la tables syslocks mais le spid associé à ces lignes n'est pas présent dans la table sysprocesses. (zombie lock ou phantom lock )

 

 

Conséquence

 

Le process fantome laisse des locks donc peut bloquer d'autres processus.

 

 

Résolution

 

La solution la plus radicale est le reboot du serveur SYBASE ASE. SYBASE va dans ce cas "rollbacker" tous les transactions non "commitées".

SI vous êtes en version ASE 12.5.4 ou plus, vous pouvez essayer d'utiliser la commande 'dbcc lock_release'.

Pour info, je n'ai pas eu le temps de la tester moi-même

 

 

Commande

 

Usage: lock_release( spid, { "table", "page", "row" }, locktype = { "ex_tab", "sh_page", "up_row", etc. }, dbid, objid [, pageno [, rowno ] ] [, "force" ] )

Attempts to release the lock held by the given spid that was badly terminated.