Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2658 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Oracle9 : Probleme de lock

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Oracle9 : Probleme de lock

n°1178003
esox_ch
Posté le 17-08-2005 à 15:44:54  profilanswer
 

Bonjour,
 
Dans l'entreprise dans laquelle je fais actuellement mon stage il y a un probleme assez bizard ..
De temps en temps, sur les serveurs de production (aie!) il y a des sessions qui se "lock", c'est à dire que les sessions se mettent à attendre l'une sur l'autre... En gros toutes les sessions attendent qu'une autre ait fini d'executer la sienne avant de continuer .. Et donc plus personne ne passe ...
 
Le code source de l'application (ecrite en Java) à bien entendu été passé au peigne fin mais rien n'a été sorti ...  
Le problème est que ce genre de problème arrive quand beaucoup de personnes balancent le meme genre de requete (qui est pourtant tres simple ... ) en meme temps, et étant donné qu'on est seulement 20 dans la boite on n'est pas assez pour faire locker nos serveurs de dev et donc arriver a voir exactement où ça plante.
 
On a demandé a un DBA oracle de venir voir, mais il n'a pas trop su comment réparer ça .. Il avait presque l'air de dire que c'est oracle qui n'arrive pas a gerer autant de requetes concourantes ( a vu de nez entre 30 et 50 ).
 
Est-ce que vous connaissez des cas similaires qui ont été resolu, ou est-ce que vous voyez ce que ça pourrait etre (on sait jamais).
 
Je n'ai pas collé ici une des requetes "suspectes" parcequ'il n'y a vraiment rien de sorcier... Une de celles qui semble locker le plus souvent est un insert d'une 40 ène de champs , monotable ... Rien de bien sorcier quoi ..
 
Merci d'avance


Message édité par esox_ch le 17-08-2005 à 15:45:13

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 17-08-2005 à 15:44:54  profilanswer
 

n°1178053
sircam
I Like Trains
Posté le 17-08-2005 à 16:25:17  profilanswer
 

Ca m'étonne qu'un DBA Oracle n'ait pas pu vous en dire plus.
 
Quelle version ? Support Oracle dispo ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1178093
esox_ch
Posté le 17-08-2005 à 16:57:28  profilanswer
 

Salut,
Comme comme je l'ai dit dans le titre, c'est des 9.x (plusieurs version si je me trompe pas). Qu'entends tu par support oracle dispo?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1178099
sircam
I Like Trains
Posté le 17-08-2005 à 17:00:42  profilanswer
 

Beh, entre 9.x et la version précise, y'a une marge.
 
Plusieurs versions --> ???
 
Le but de ma question était de savoir si le dernier patch dispo avait été appliqué.
 
Support Oracle : beh, le support de chez Oracle. Tu payes très cher et tu peux les appeler, anytime. [:dawa]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1178103
esox_ch
Posté le 17-08-2005 à 17:02:03  profilanswer
 

Il y a plusieurs version differentes parceque plusieurs serveurs ... Tout les serveurs n'ont pas la meme version d'oracle (ni de jre ... j'te dis pas le bordel pour developper :D .. mais bon les clients veulent rien savoir ...).  
 
Je vais me renseigner pour le support de chez oracle


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1178112
esox_ch
Posté le 17-08-2005 à 17:12:54  profilanswer
 

Update : Non pas de support :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1178180
Beegee
Posté le 17-08-2005 à 18:14:42  profilanswer
 

Y a personne qui s'amuse à lancer un UPDATE sur la table en question, sans COMMIT ? ou qqch dans le genre (qui expliquerait le lock).

n°1178205
esox_ch
Posté le 17-08-2005 à 18:42:30  profilanswer
 

ça m'etonnerais qu'ils soient passés a coté de ça ... Mais demain je vais aller en reparler avec l'admin pour savoir vous en dire un peu plus. Merci beaucoup en tous cas


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1178231
sircam
I Like Trains
Posté le 17-08-2005 à 19:17:33  profilanswer
 

Beegee> Coup classique, spécialement si des utilisateurs sont connectés à la DB. Mais j'en doute ici s'il s'agit d'une DB de prod. Il s'agirait plutôt d'une erreur dans le code.
 
Mais esox nous dit qu'ils l'ont passé au peigne fin.
 
C'est quoi comme accès à la DB ? Entity-beans, JDBC, Spring ? Application server, connection pooling ?
 
Si vous arrivez à 30-50 requêtes concurrentes sur un système prod et que vous n'avez pas de contrat de support, il y a sans doute un sérieux problème de management. :o
 
En plus avec des versions hétéroclites... Faut pas chercher les ennuis et ensuite venir pleurer. :o
 
J'approfondirait sur la requête qui bloque le plus souvent à défaut de mieux pour l'instant. [:pingouino]
 
Si tu es d'attaque, tu peux te risquer avec Toad et le DBA module pour voir ça de plus près.


Message édité par sircam le 17-08-2005 à 19:18:01

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1178239
esox_ch
Posté le 17-08-2005 à 19:22:22  profilanswer
 

C'est du JDBC . Pour le contrat support j'ai demandé a un des mecs du support de chez nous et il m'a dit non, demain l'admin est la et je lui demande le tout ...
 
Pour toad, je vais lui proposer ça, le truc c'est que mon cahier de charges est assez rempli et que je suis pas sur qu'ils soient motivés a "perdre" un dev Java experimenté au profit d'un DBA incapable :D
 
Deplus, pour les version différentes, c'est une des raisons pour lesquelles on gueule 3x par semaine ... le probleme est que certaines client ne veulent pas se mettre a jour parcequ'ils ont d'autres appli qui se nourissent de la meme base, et qu'ils veulent pas risquer d'avoir des emmerdes


Message édité par esox_ch le 17-08-2005 à 19:23:40

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 17-08-2005 à 19:22:22  profilanswer
 

n°1178243
sircam
I Like Trains
Posté le 17-08-2005 à 19:24:22  profilanswer
 

esox_ch a écrit :

je suis pas sur qu'ils soient motivés a "perdre" un dev Java experimenté au profit d'un DBA incapable :D


C'est pourtant ce qu'ils ont fait avec moi. [:klem3i1]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1178247
esox_ch
Posté le 17-08-2005 à 19:41:15  profilanswer
 

Je ne prendrais pas la perche que tu me tends...  Considère le une marque de mon respet pour toi [:klem3i1]


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1178249
sircam
I Like Trains
Posté le 17-08-2005 à 19:43:12  profilanswer
 

[:klem3i1]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1178796
Arjuna
Aircraft Ident.: F-MBSD
Posté le 18-08-2005 à 14:48:15  profilanswer
 

Juste comme ça... Quand vous avez passé au peigne fin l'appli, vous avez vérifié quoi ?
 
Si vous n'avez vérifier que des trucs bête genre que toute connection / commande ouverte était bien fermée après utilisation, c'est un coup d'épée dans l'eau.
En effet, que ce soit Java ou JDBC, les deux s'en occupent très bien (connectionTimeOut / commandTimeOut / garbage collector)
Au pire, vous auriez un ralentissement de l'appli.
 
Donc c'est pas ça qu'il faut recherche.
 
Je ne maîtrise pas Java du tout, et pas plus JDBC, par contre, une chose qui est sûre, c'est qu'ils permettent de faire la même chose qu'en VB/C++ avec une connection OLE/ODBC.
 
DONC. Par exepérience, ce qui peut faire des deadlock :
-> Vérifier que vous n'avez des transaction qu'aux endroits absolument nécessaires, ET que tout le lot est éxécuté d'un coup. Il ne faut pas commencer une transaction sur un écran et la finir sur un autre écran : si la personne part boire un café, l'ensemble des lignes touchées par la transaction sont lockées jusqu'à ce qu'elle revienne.
-> Si JDBC ne fonctionne pas en AUTO COMMIT, alors forcez-le immédiatement : avec OLEDB, si on le désactive, le COMMIT est fait uniquement lorsqu'on ferme la connection (c'est très con mais c'est comme ça). Vu que ça génère une transaction, vous imaginez les problèmes sous-jascents.
-> N'utilisez PAS de curseur dynamique, c'est à dire des curseurs qui permettent des modifications et des mises à jour "en live" depuis un objet DataGrid par exemple. En effet, ça génère, en plus de transactions, carrément des LOCK.
 
Maintenant, imagine :
 
J'ai un DataGrid qui fait un lock sur la table "facture".
Lorsque je met à jours les lignes de "facture", alors je met à jour aussi la table "client" (un compteur ou autre) par trigger.
Pendant que je suis en train de bosser sur ma facture, une autre personne lit sa fiche client, et change le status de l'utilisateur. Cependant, il n'est pas sûr, donc avant de valider, il veut vérifier les factures et... tente d'ouvrir celle que le premier utilisateur modifie.
 
Là, proutch, les deux sont bloqués.
=> L'utilisateur 1 ne peux pas valider car le trigger est blocké par le lock sur le client
=> L'utilisateur 2 ne peux pas accéder à la facture car elle est en cours de modif et la ligne est donc lockée.
 
Si le code ne gère pas proprement le code, permettant d'annuler la dernière action dans la base et en forçant l'un d'eux d'annuler ses modif, t'as un dead lock et c'est fini.
 
Bref, aucun lock explicit, aucun truc bizarre dans l'appli, et pourtant ça merde.


Message édité par Arjuna le 18-08-2005 à 14:51:58

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Oracle9 : Probleme de lock

 

Sujets relatifs
problème de souris OpenGLProblème de scrollbar
[J2EE] [i18n / l10n] Problème avec l'internationalisationProblème de loading
Problème de clic sur un object movieClip[résolu]probleme avec $_FILES lors d'un upload
[XML]probleme de parseur avec la DTDPetit problème
[VB.NET] Probleme formProbléme de saisi de caractére !!
Plus de sujets relatifs à : Oracle9 : Probleme de lock


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR