An einem Standort kann mich auf die Oracle-Datenbank mit SQL Developer verbinden, lassen Sie es für eine lange Zeit im Leerlauf (z.B.> 60 Minuten), und zurück, und es ist in Ordnung. Wenn es an einem zweiten Standort länger als 5-10 Minuten inaktiv ist (ich habe nicht genau gezählt), bleibt SQL Developer in einem Zustand, in dem neue Vorgänge Zeitüberschreitung verursachen und ich manuell "Trennen" muss und dann erneut in der Reihenfolge verbinden muss etwas Nützliches tun. Dies scheint ein Verbindungstimeout bei der zweiten Seite zu sein, und ich weiß nicht, was es verursacht (und ich würde gerne wissen, wie ich es abstellen kann, obwohl das nicht meine Hauptfrage ist).ODP.NET: Vermeiden von Verbindungs-Timeouts mit Anschluss
Mein Programm verwendet ODP.NET und verarbeitet Daten, die in Schüben kommen. Alle 30 Minuten (um der Diskussion willen) wird eine Reihe von Daten verarbeitet, die eine Anzahl von wiederholten Verbindungen beinhalten. Es verwendet auch Verbindungspooling. Ich habe den Verbindungspool auf eine Lebensdauer von 5 Minuten eingestellt.
Was ich an der zweiten Seite (und nicht an der ersten) sehe, ist, dass mein Programm zu Beginn jedes Datenstoßes Verbindungszeitüberschreitungsausnahmen (z.B. ORA-03113) erhält. Was ich glaube, ist, dass während des Datenstarts der Verbindungspool wie vorgesehen verwendet wird. Am Ende des Spurts ist die "Connection Lifetime" aktiviert, und die Verbindung ist nicht zu alt, so dass sie im Verbindungspool verbleibt. Dann wird 30 Minuten später, wenn neue Daten ankommen, wird die Verbindung aus dem Pool genommen (und nicht ein Leben lang oder Timeout geprüft) und verwendete und wird timeing aus, so wie ich in SQL Developer zu sehen.
Wie kann ich die Verbindung Timeout vermeiden, aber immer noch in den Schüben Vorteil der Connection Pool nehmen? Aus der Dokumentation (und meiner Erfahrung) geht hervor, dass die Verbindung nur dann auf Lebenszeit geprüft wird, wenn sie in den Pool gelangt, und nicht, wenn sie herauskommt.
nicht kenntnisreich genug in diesen Angelegenheiten, aber wir hatten ein sehr ähnliches Problem (geänderte Datenzentren). Das neue Rechenzentrum würde jeden Port, der ohne Aktivität geöffnet war, für etwas länger als X Minuten beenden (wir hatten genau das gleiche Problem wie bei SQL Developer und anderen lang andauernden Prozessen. Wir haben uns gegen die Hosting-Firma geärgert die ora ports nicht zu töten (aber sie haben kurz empfohlen, dass wir einen puls nur für ora verbindungen implementieren, der von hand abgelehnt wurde) aber es erforderte arbeit von ihr selbst. viel glück! – Harrison