Bonjour,
J'ai un application .NET attaquant une base Oracle 10g qui a tendance à produire des locks dans certains cas particulier que je n'arrive pas à définir.
Avec les requêtes que j'ai pu trouver sur ce forum j'arrive à identifier la session qui lock et celle qui attend.
Pour la session en attente, je suis capable de récupérer la requête en cours via la column SQL_ID de la table V$SESSION, par contre pour la session qui bloque, le champ SQL_ID est vide.
Exemple Simple pour illustrer :
Si je fais un update sur une la première ligne d'une table avec la session 1 mais que je ne commit pas. Et que je tente ensuite avec la session 2 de faire un update sur cette même ligne, j'obtiens un lock tant que je ne commit pas la session 1.
Avec la table V$SESSION et le champ SQL_ID je peux effectivement retrouver la requête en attente pour la session 2 par contre je n'arrive pas à trouver la requête de la session 1.
Y a-t-il une possiblité de récupérer cette requête? Sinon peut-on éventuellement savoir quels objets sont lockés?
Ces problèmes se produisant uniquement en production (dû notamment à la densité du trafic) il n'est donc pas envisageable de tracer la session.
Le but final est d'identifier avec précision les requêtes incriminés.
Merci d'avance.
Partager