Bonjour à tous,
Nous avons une base de production 10gR2 Std sur Windows Server Std 2003 SP1 32-bits avec les switches /3GB /PAE (pour allouer plus de 2GB au process oracle.exe).
C'est une base transactionnelle à laquelle se connectent des pools de connection JDBC Thin driver.
La SGA max est réglée à 1904 Mo.
Pour monitorer la mémoire suite à des erreurs ORA-04030, j'ai activé perfmon.
Il apparait que le nombre de threads liés au process oracle.exe est largement supérieur au nombre de sessions référencées par la requête suivante :
Cette requête me retourne 181 threads (cohérant par rapport à l'activité de la base), alors qu'il y en a 346 associés au process oracle.exe dans le moniteur de performances NT.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select spid, osuser, s.program,background from v$process p, v$session s where p.addr=s.paddr;
Aussi :
- Dois je trouver le même nombre de threads oracle dans la requête SQL ci-dessus et dans le moniteur de performance ?
- Si oui, quelle piste aborder pour identifier la nature de la non-libération de ces threads au niveau OS ?
Et comment libérer les threads non référencés par la requête SQL ci-dessus sans arrêter le service (base de prod 24/7...), ni utiliser la commande orakill à la chaine ?
Il y a des notes très intéressantes sur MetaLink (316652.1) mais je n'y ai pas trouvé la solution à mon problème.
Merci à tous de votre aide.
Partager