|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Bonjour,
Configuration : 10gR2 en RAC et ASM sur des serveurs SUN. Depuis quelques jours, notre plateforme connait des ralentissements et des dysfonctionnements que je n'arrive pas à expliquer. Pour information : Suite à un incendie dans notre bâtiment, la base a été violemment coupée électriquement malgré nos onduleurs. Après vérification, la base ne semblait pas corrompue et a été remise en production il y a 2 semaines. Elle est arrêtée et redémarrée chaque soir. Cette coupure a été accusée de tous les maux mais j'ai pu montrer que les problèmes ne venaient pas de la base mais de traitements applicatifs. Seulement depuis, il existe toujours des "ralentissements" voire des pertes de connexions "étonnantes". Dans l'alert_log, les seules traces inquiétantes sont des lignes du type : Code :
Code :
![]() Je ne comprends pas par où poursuivre l'enquête. Comme demandé dans d'autres posts, je vous joins un extrait d'un rapport AWR d'aujourd'hui qui correspond à une période standard d'occupation du serveur (8h à 16h) Code :
Code :
|
||||||||
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() |
Hello,
Code :
Regarde ici: http://kr.forums.oracle.com/forums/t...sageID=3736894 Merci jko
__________________
OCA-OCP 11g, SQL and Performance & Tuning Expert 11g Data Guard 11g, ASM & Grid Control 11g, Apex |
||
|
00
|
|
|
#3 | ||||
|
Membre expérimenté
![]() Mohamed HouriInscription : mars 2010 Messages : 286 ![]() |
Bonjour,
Quelle est la durée de ce rapport? c'est très important d'avoir un rapport AWR qui couvre uniquement la période où la base de données est en souffrance. Autrement, à cause des moyennes faites par le rapport AWR, une large période ne peut être d'aucune plus value. Il serait intéressant de montrer cette partie de l'AWR Code :
Code :
Cependant vous avez un très large nombre de 'db file sequential read' qui veut dire lecture à partir d'index. Il faut bien noter néanmoins que le temps moyen de lecture à partir d'un index est excellent (2 ms). Ce "wait event" corrélé avec l'autre event "gc buffer busy" me conduit à penser que vous avez plusieurs neuds (nodes) qui veulent modifier le même block au même moment. le "gc buffer busy" est l'equivalent RAC de "buffer busy waits" en non RAC. Bien que ce dernier ait été décomposé en deux "wait events" depuis la 10g (1) read by other sessions (2) buffer busy waits Afin de differencier entre les sessions qui attendent que le block soit lu du disque et placé dans le "buffer cache" de celles qui attendent que la session finisse d'inserer ou d'updater le block qu'elles veulent modifier. Dans votre cas, vous devriez consulter les deux parties suivantes de votre rapport (1) SQL ordered by cluster wait time ceci vous montrera le code sql qui est probablement le plus concerné avec votre problème (2) Segments by Global Cache Buffer Busy Waits alors que celui ci va vous dire quel est l'objet qui est le plus solliciter ici Il semblerait bien que cela est dû à des unique indexes basés sur des séquences avec un faible cache. Bien cordialement Mohamed Houri |
||||
|
|
00
|
|
|
#4 | ||||||||||||||||
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Merci beaucoup pour vos réponses et votre attention.
@Jkofr Code :
J'ai donc fait cette requête sur v$lock : Code :
Code :
Code :
@Mohamed.Houri Ok j'ai régénéré le rapport AWR entre 8h et 12h hier, période où les ralentissements ont été les plus fréquents. C'est un exemple pertinent. Code :
Code :
Code :
Code :
Vos déductions semblent pertinentes même si je ne comprends toujours pas comment vous y parvenez Quelle piste dois-je suivre maintenant svp ? |
||||||||||||||||
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() |
Hello,
Dans le rapport AWR tu devrais avoir l'SQL non? Tu peux générer aussi un rapport ASH en filtrer directement sur tes SID. Question: entre le plantage DB et le début de tes ennuis, quels changements structurels on été effectues? As tu vérifié tes objects? As tu des index qui sont devenus unuseable? Jko
__________________
OCA-OCP 11g, SQL and Performance & Tuning Expert 11g Data Guard 11g, ASM & Grid Control 11g, Apex |
|
00
|
|
|
#6 | |
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Merci de ton aide
oui mais pas complet. Mais je le trouverais dans v$sql. Citation:
Il n'y a pas eu de changement physiques sur la baie. A priori aucun changement logique à part une evolution de code mais qui est loin de tout ça. Alors que la base est en RAC avec 2 instances, un arrêt brutal d'une instance par shutdown abort a été faite. Une influence ? Comment fait-on ? Des index qui ne sont pas valides ? non, aucun |
|
|
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() |
Oui, structurel n'est peut-être pas le bon terme.
Nouveaux index, nouvelles requêtes, fonctionnalités. Pour les objets invalides ou index inutilisable: Depuis le user applicatif. Code :
Question: c quoi l'évolution de code? Essais de récupérer les requêtes via ASH qui correspondent aux SID cités. Jko
__________________
OCA-OCP 11g, SQL and Performance & Tuning Expert 11g Data Guard 11g, ASM & Grid Control 11g, Apex |
||
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Il y a 3 objets récents non valides.
L’évolution du code correspondait à la prise en compte de nouvelles recherches applicatives : nouvelle table, nouvelles vues (2 non-valides), un package (non valide). Après le reste du code était surtout applicatif, peu d'impact sur la base. Je vais éplucher le patch plus précisément la semaine prochaine. |
|
|
00
|
|
|
#9 |
|
Membre expérimenté
![]() Mohamed HouriInscription : mars 2010 Messages : 286 ![]() |
Bonjour,
Pour votre information, lorsque votre base de données souffre d'un "lock", il suffit pour cela de générer un rapport AWR d'un dizaine de minutes pendant cette période. C'est largement suffisant. Ceci dit, votre base semble souffrir d'un TX (transaction) "lock" au niveau d'un enregistrement (row lock transaction) sur un mode 6 et un "request" de 6 également comme votre select sur v$lock l'a montré (ce qui exclut la possibilité d'un lock provenant de "foreign keys" non indexéss qui auquel cas aurait été du type TM et non TX comme c'est le cas ici). Il faudrait trouver les sqls qui sont en collision afin de bien affiner votre recherche. Pour cela je vous conseille d'utiliser les scripts contenus dans le blog suivant http://jonathanlewis.wordpress.com/2...ng-2/#more-320 et affiner jusqu'à arriver aux sqls qui bloquent. Bon courage Mohamed Houri |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2007 Messages : 87 ![]() |
Encore merci pour vos réponses.
Notre enquête interne nous a mené aussi sur d'autres directions. Une piste sur la shared_pool avait été émise par par notre correspondant Oracle dans le cadre de la maintenance Sun La SGA_TARGET a été mise à niveau de SGA_MAX_SIZE et la valeur minimale de la SHARED_POOL a été augmenté en se basant sur les résultats de V$SHARED_POOL_ADVICE. De plus, les stats de nos tables un peu obsolètes (quelques mois pour certaines tables de 40M de lignes) ont été recalculées. Mais le plantage est revenu et nous avons pu identifié le problème ![]() Notre applicatif, lors du rattrapage d'une modification multiple mal terminée, est confronté à un environnement data sans doute incohérent et n'arrive pas géré la fin de sa transaction. Il verrouille certaines tables et les locks s'empilent jusqu'au clash. Il nous reste plus qu'à découvrir quelles données lui posent problème et/ou corriger son comportement. Merci pour votre aide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com