/ / "ORA-01012" Fehlermeldung beim Versuch, eine Verbindung zu einer Oracle-Datenbank herzustellen - c #, oracle10g, odp.net

"ORA-01012" Fehlermeldung beim Versuch, eine Verbindung zu einer Oracle-Datenbank herzustellen - c #, oracle10g, odp.net

Verwenden von C # und Oracle Data Provider für.NET (ODP) Ich habe eine lange Abfrage an die Datenbank gemacht, dann beende ich die Verbindung auf der Serverseite mit TOAD. Danach werfen die nachfolgenden Aufrufe an die Datenbank, selbst wenn sie ein neues OracleConnection-Objekt erstellen, den folgenden Fehler auf:

ORA-01012: not logged on
Process ID: xxx
Session ID: yyy Serial number: zzz

Wo Prozess-ID und Sitzungs-ID sind die Kennungen, die ich zum Beenden der Verbindung verwendet habe.

Es scheint so, als wenn ich die Verbindung zum Internet beenden würdeOracle-Datenbank auf der Serverseite wird die unterbrochene Verbindung an den Verbindungspool zurückgegeben. Und wenn der C # -Client-Code (mit ODP) eine neue Verbindung öffnet, kann die unterbrochene Verbindung, die an den Verbindungspool zurückgegeben wurde, abgerufen werden.

Irgendwelche Ideen, wie Sie dieses Verhalten beheben können?

BTW Ich benutze Oracle Client 10

Antworten:

4 für die Antwort № 1

Ich habe mein Problem gelöst, indem ich die Eigenschaft "Verbindung validieren" in der Verbindungszeichenfolge auf true gesetzt habe.

Sie können mehr lesen Hier

Als Warnung zitiere ich die Oracle-Dokumente.

Das Validate Connection-Attribut wird überprüftVerbindungen kommen aus der Pool. Dieses Attribut sollte nur verwendet werden, wenn es absolut notwendig ist weil es einen Server-Round-Trip zur Datenbank verursacht, um jeden zu validieren Verbindung direkt bevor sie der Anwendung zur Verfügung gestellt wird. Wenn ungültig Verbindungen sind ungewöhnlich, Entwickler können ihr eigenes Ereignis erstellen Handler zum Abrufen einer neuen Verbindung, anstatt Validate zu verwenden Verbindung. Dies bietet im Allgemeinen eine bessere Leistung.