2016-03-31 22 views
2

Wir stießen gerade auf ein Problem mit unserer Website. Wir betreiben eine Oracle 12c-Datenbank und verwenden IIS 8 auf einem Windows 12 Azure-Server. ODP.NET ist der Provider, den wir verwenden. Die Website wird in C# erstellt und als 64-Bit-Webanwendung ausgeführt.Oracle nicht inaktiven Prozess und/oder Sitzung von meinem ASP.NET-Anwendungspool freigeben oder töten

gleich aus welchem ​​Grund, wird Oracle Release nicht unsere Verbindungen, und nach einer Weile bekamen wir einen Oracle-Fehler:

ORA-12520: TNS:listener could not find available handler for requested type of server 

Wir alle unsere Verbindungen String überprüft und ergänzt:

Min Pool Size=10;Max Pool Size=100;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5; Decr Pool Size=2 

Wir haben den MAX-Prozess und die MAX-Sitzungen, die in der Oracle-Konfiguration definiert wurden, mehr als verdoppelt.

Es hilft, aber nur das Problem zu verzögern.

Für den Moment haben wir eine Batch-Datei erstellt, die alle 10 Minuten läuft und alle inaktiven Sitzungen, die nach 30 Minuten immer noch da sind, beendet (ALTER SESSION KILL .... IMMEDIATE).

Das ist, wo wir sind, haben wir die ODP.NET-Ablaufverfolgung aktivieren und warten, um es morgen zu betrachten, aber zu diesem Zeitpunkt, was kann dieses Problem verursachen?

+0

Welchen. NET ADO Oracle-Client verwenden Sie? Wie sieht der Code aus, der Verbindungen herstellt? Schlecht geschriebener Code, der 'using' Blöcke oder' finally' Blöcke nicht verwendet, um jede Verbindung zu schließen, nachdem sie benutzt wurde, kann ein Täter sein. Ohne weitere Informationen kann wahrscheinlich niemand mehr für Sie tun. – Igor

+0

Entschuldige bitte nur meine Antwort. Ich dokumentierte für andere. – JudgeProphet

Antwort

2

Schließlich, was ich in der ODP.NET Trace gefunden war

TID: dac (ERROR) Oracle error code=28002; Oracle msg=ORA-28002: the password will expire within 6 days 

Es scheint, dass dieser Fehler nicht den Zugriff auf die DB nicht zu stoppen, aber die Sitzung im Pool hängen.

Nachdem wir das behoben hatten, war alles wieder normal.