web-dev-qa-db-fra.com

Pourquoi les sessions Oracle sont toujours actives après deux semaines d'inactivité

DB: Oracle 10g

O/S: Windows Server 2003 64 bits

Je recherche la liste des sessions Oracle générées par les applications Web (filtrer par programme = w3wp.exe)

select * from V$session
where UPPER(program) LIKE '%W3%'
order by logon_time

enter image description here

Selon Logon_Time, pourquoi y a-t-il encore des sessions en cours du 31/07/2012 ou 01/08/2012 ou une session avant aujourd'hui (21/08/2012)?

J'ai configuré sur sqlnet.ora: SQLNET.EXPIRE_TIME = 20 Cela signifie donc que toutes les 20 minutes Oracle vérifie si les connexions sont toujours actives.

Tous les schémas utilisateur ont un profil par défaut. Cela signifierait qu'aucune session n'expirerait ou ne mourrait jamais?

enter image description here

Ajouté en réponse au commentaire de Phil:

enter image description here

Ajouté en réponse à la réponse de Phil:

enter image description here

16
Delmonte

Je soupçonne qu'ils font partie d'un pool de connexions et ne sont donc pas inactifs car ils sont utilisés fréquemment.

INACTIVE dans v$session signifie simplement qu'aucune instruction SQL n'est en cours d'exécution au moment exact où vous vérifiez v$session.

S'ils font partie d'un pool de connexions, ils font leur travail correctement en étant connectés pendant de longues périodes. L'intérêt du regroupement de connexions est de supprimer le besoin de nombreuses ouvertures/fermetures de session et de conserver des sessions persistantes pour un démarrage rapide des requêtes - il y a un surcoût beaucoup plus important pour ouvrir une requête, puis se déconnecter à chaque fois.

Pour obtenir le dernier temps d'activité pour chaque session:

select username, UPPER(program), logon_time, 
       floor(last_call_et / 60) "Minutes since active", status
from v$session
where UPPER(program) LIKE '%W3%'
order by last_call_et;

Je déconseille de tuer des sessions, sauf si vous savez que cela ne causera pas de problèmes du côté de l'application (essayer d'utiliser une session qui a été supprimée, par exemple).

Il se peut que vous examiniez un pool de connexions mal configuré qui crée des centaines de connexions une fois l'application démarrée - le pool de connexions peut être d'un ordre de grandeur plus grand qu'il ne devrait l'être. Je suggère de contacter les développeurs/le personnel de support des applications et de voir comment le pool de connexions est configuré.

Après avoir fait un peu de recherche, w3wp.exe est le IIS Application Pool Process - vous voulez presque certainement parler à vos IIS administrateurs de serveur Web pour vous aider à accéder à en bas de la configuration du pool de connexions.

22
Philᵀᴹ