|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Bonjour
Je deviens fou depuis ce matin sur un traitement PL/SQL qui ne se termine jamais. Ce traitement ouvre 33 curseurs, et pour chaque curseur fait un "FOR I IN CURSEUR ... UPDATE TABLE ..." Sauf que sur un des curseurs, la requête SELECT qui initialise le curseur consomme 100% de CPU et ne se termine jamais, alors que les stats sont à jour, le plan d'exécution et bon (pour preuve je lance la même requête manuellement et le résultat est instantané, la requête ne renvoyant aucune ligne) Le SELECT contient 2 bind variables mais le plan d'exécution est le même avec les bind variables qu'avec les valeurs réelles dans la requête Les infos de la session en question, si ça peut aider : Citation:
Statistiques d'exécution (sous la Grid Console) : Total Par exécution Par ligne Exécutions 9 1 0,00 Temps UC (s) 20 037,26 2 226,36 3,12 Lectures en mémoire tampon (Buffer Gets) 3 070 203 462 341 133 718,00 478 001,47 Lectures sur disque 21 895 2 432,78 3,41 Ecritures directes 0 0,00 0,00 Lignes 6 423 713,67 1 Extractions 72 8,00 0,01 Je suis en 10.2.0.4, auto SGA 4 Go, PGA 7 Go, aucune attente visible avec AWR dans la Grid Console, ce n'est que de la consommation CPU (que du vert niveau couleurs Comment puis-je investiguer sur cette requête qui m'a l'air figée et qui prend 100% de la CPU ? Est-ce normal d'avoir "buffer is pinned count" à 2529004032 et "buffer is not pinned count" à 10935364 Merci de votre aide
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 519 ![]() |
T'as jeté un oeil dans V$SESSION_LONGOPS afin de voir ce qui se passe ?
__________________
Pas de réponse aux messages privés. Faites un post pour vos problèmes, que tout le monde en profite...
|
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Finalement c'était un PL/SQL développé comme un bourrin qui faisait des dizaines de select/update très courts mais construits dynamiquement (sans bind variables ni soft parsing) dans des boucles, ça avait tellement saturé ma CPU que l'AWR n'était apparemment pas capable de me dire quelle requête consommait ...
Merci quand-même
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com