Einstellung von Oracle 11g Session Timeout

8

Nach dem Neustart des Servers läuft die Oracle-Verbindung vom Tomcat-Server jede Nacht ab. Vor dem Neustart hat die Verbindung kein Zeitlimit überschritten. Jetzt wirft die Anwendung am Morgen einen JDBC-Verbindungsfehler beim Zugriff auf die Datenbank. Durch den Neustart von Tomcat wird das Problem behoben. Ich nehme an, dass das wegen der Verbindungen ist, die wieder hergestellt werden. Ich denke, das liegt daran, dass die Oracle-Datenbank die Sitzung beendet hat. Wie kann das Sitzungszeitlimit in Oracle 11g deaktiviert werden? Danke! Steve

Config.groovy mit dev und test ausgelassen.

%Vor%     
ptsw 29.07.2010, 15:01
quelle

6 Antworten

12

Dies wird im Allgemeinen durch das Profil gesteuert, das mit dem Benutzer verbunden ist, mit dem Tomcat verbunden ist.

%Vor%

Der Benutzer, mit dem ich verbunden bin, hat unbegrenzte Leerlaufzeit - keine Zeitüberschreitung.

    
Adam Musch 29.07.2010 16:52
quelle
2

Adam hat bereits Datenbankprofile vorgeschlagen.

Sie könnten die SQLNET.ORA-Datei überprüfen. Es gibt einen EXPIRE_TIME Parameter, aber dies dient zum Erkennen von verlorenen Verbindungen, anstatt bestehende zu beenden.

Wenn es über Nacht passiert, klingt es eher wie eine Leerlaufzeitüberschreitung, die auf eine Firewall zwischen dem Anwendungsserver und dem Datenbankserver zurückzuführen ist. Durch Einstellen von EXPIRE_TIME darf das nicht mehr geschehen (da alle 10 Minuten überprüft werden, ob der Client noch aktiv ist).

Oder möglicherweise wird die Datenbank heruntergefahren und neu gestartet, wodurch die Verbindungen beendet werden.

Alternativ sollten Sie Tomcat mit einer Validierungsabfrage damit die Verbindung automatisch ohne Tomcat-Neustart neu gestartet wird

    
Gary Myers 13.08.2010 06:19
quelle
2

Dies wird wahrscheinlich durch den Verbindungspool Ihrer Anwendung verursacht. kein Oracle DBMS Problem. Die meisten Verbindungspools verfügen über eine validate-Anweisung, die ausgeführt werden kann, bevor Sie die Verbindung erhalten. In Orakel möchten Sie "Select 1 from dual".

Der Grund dafür, dass es nach dem Neustart des Servers aufgetreten ist, besteht darin, dass der Verbindungspool wahrscheinlich ohne Neustart hinzugefügt wurde und Sie jetzt erst den Verbindungspool zum ersten Mal verwenden. Wie lauten die Änderungsdaten für Ihre Ressourcendateien, die Datenbankverbindungen betreffen?

Validate Query-Beispiel:

%Vor%

BEARBEITEN: Im Fall von Grails gibt es ähnliche Konfigurationsoptionen für den Grails-Pool. Beispiel für Grails 1.2 (siehe Release Notes für Grails 1.2 )

%Vor%     
Brian Hart 13.08.2010 13:52
quelle
1

Ich kam zu dieser Frage und suchte nach einer Möglichkeit, den Ablauf des Oracle-Sitzungspools basierend auf der gesamten Sitzungslebensdauer anstelle der Leerlaufzeit zu aktivieren. Ein weiteres Ziel ist es, zu vermeiden, dass Kraft unerwartet für die Anwendung kommt.

Es scheint, dass es möglich ist, eine Validierungsabfrage auf %Vor%

Dies würde Sitzungen, die über 30 Minuten alt werden, in einer vorhersehbaren Weise beenden, die sich nicht auf die Anwendung auswirkt.

    
Vadzim 24.09.2015 16:18
quelle
0

Weiß die Datenbank, dass die Verbindung unterbrochen wurde oder ist die Sitzung noch in v $ Sitzung aufgeführt? Das würde bedeuten, dass es vom Netzwerk gelöscht wird. Wissen Sie, wie lange es im Leerlauf bleiben kann, bevor es auf das Problem stößt, und ob das Ähnlichkeiten mit den TCP-Leerlaufwerten hat (net.ipv4.tcp_keepalive_time, tcp_keepalive_probes und tcp_keepalive_interval von sysctl, wenn ich mich richtig erinnere)? Ich kann mich nicht erinnern, ob sysctl-Änderungen standardmäßig beibehalten werden, aber das könnte etwas sein, das geändert und dann durch den Neustart zurückgesetzt wurde.

Sie können möglicherweise auch Ihre JDBC-Verbindungen zurücksetzen, ohne den gesamten Server zu durchsuchen. Sicher kann man in WebLogic, was ich realisiere, nicht viel helfen, aber mir sind die Tomcat-Äquivalente nicht bekannt.

    
Alex Poole 12.08.2010 16:25
quelle
0

Überprüfen Sie die Verbindungseinstellungen für die Verbindung der Anwendungen, anstatt die Zeitlimiteinstellungen für die Sitzung in der Oracle-Datenbank zu ändern. Es ist normal, dass sie eine Auszeit nehmen.

Sehen Sie hier: Ссылка

Sind Sie sicher, dass Sie den Parameter "pooled" richtig eingestellt haben?

Grüße, Lars

BEARBEITEN:
Ihre Konfiguration scheint auf den ersten Blick in Ordnung zu sein. Ich bin heute auf dieses Problem gestoßen. Vielleicht hängt es mit Ihrem Schmerz zusammen:
"Unendliche Schleife von Ausnahmen, wenn die Anwendung gestartet wird, wenn die Datenbank aus Wartungsgründen nicht verfügbar ist "

    
Lars 13.08.2010 14:55
quelle

Tags und Links