|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2004 Messages : 92 ![]() |
Bonjour a tous
j'ai un problême de verrous sous ma base 10g 10.2.0.1 J'ai des erreurs fréquentes d'acquisition de verrous pour un applicatif Forms. J'ai des sessions bloquantes fréquentes.J'aimerais en connaitre la cause est ce que ça peut etre du a des micro-coupures au niveau reseau ? Comment oracle se comporte pour une session qui detient un Verrou sur des lignes d'une table et dont la connexion s'interrompe a cause d'un probleme réseau ? Je sais ke le process PMON s'occupe de la libération des verrous pour les process ayant échoué mais j'ai fait un test en enlevant le cable réseau d'une session détenant un verrou le PMON ne detecte pas immediatement que le process a échoué et il le detient encore pendant un moment (parfois ça depasse les 5 minutes) par contre quand je kill le process (sqlplus) il libére immediatement le verrou. Je sais ke c un peu vague mais j'aimerais avoir une idée générale , une doc si possible comment détecter et résoudre les problêmes de verrous externes Merci |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2004 Messages : 92 ![]() |
Merci pour ta rep pifor
En ce qui conecerne dba_waiters et dba_blockers je confirme il y'a bien des entrées dans ces vues g pas de doute la dessus je vois ça via entreprise Manager dans Sessions Bloquantes et j'ai aussi testé avec les vues. Sinon une question concernant le expire_time: Sa valeur par défaut c koi? Je suppose qu'il faut aggrandir sa valeur c ça? Est ce k'il faut qu'il soit configuré dans le sqlnet.ora coté Serveur ou client ou les deux ? Merci |
|
|
00
|
|
|
#4 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour,
Est ce que dans ton formulaire tu fais des updates dans d'autres tables qui sont pas incluses dans ta forme ? |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
La valeur par défaut est 0. Oui il faut augmenter la valeur et il faut le configurer seulement côté serveur et redémarrer le listener.
PS: merci de vous exprimez clairement en bon français. |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Bon reprenons depuis le début. Tu as des locks mais avant de chercher compliqué as tu verifié le "simple".
Est tu sur que les lock sont lié a des sessions plantés. C'est peu probable que cela arrive souvent ou tu as soit des utilisateur brutaux soit un réseau pourri. Pour moi l'hypothèse la plus probable est un problème de FK non indexe. Je m'explique si un utilisateur même a jours une colonne qui est FK et que celle ci n'est pas indexé alors Oracle lock toute la table et non pas seulement la ligne mise a jour. Et ce lock dure aussi longtemps que la transaction n'est pas pas COMMITé. Or en Forms les transactions peuvent être très longues puisque Forms fait un update dés que l'on modifie un block basé et par contre ne Commit que si on appuie sur enregistrer. Hope this helps PS. Je crois qu'il y a dans les scripts un script qui te permet de retrouver toutes ces FK non indéxés |
|
|
00
|
|
|
#7 | ||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour,
mais on peux remédier à ce problème en mettant le locking mode du block à 'DELAYED', ca veut dire il lock l'enregistrement seulement au moment de la transaction final, mais des fois il y a un autre type de lock provoqué au moment que je fasse un commit en modifiant d'autres tables exemple T1 qui figure pas dans ma forme alors avant de modifier T1 il faut vérifier si la table T1 n'est pas utilisée par d'autres utilisateurs dans d'autres sessions par le biais d'un curseur sur la table T1 ou un select avec l'option FOR UPDATE OF T1 no_wait. Exmeple Code :
|
||
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2004 Messages : 92 ![]() |
désolé pour le retard g t pa au bureau
.Le problême a bien été résolu a l'aide de expire_timeout dans le sqlnet.ora Merci pour vos réponses |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com