Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Inaktive Sitzung in Oracle von JDBC

Was genau ist das Problem?

Normalerweise erstellt der Anwendungsserver der mittleren Ebene einen Verbindungspool. Wenn Ihr Code eine Verbindung anfordert, erhält er eine bereits geöffnete Verbindung aus dem Pool, anstatt den Aufwand für das Erzeugen einer neuen Verbindung zur Datenbank zu durchlaufen. Wenn Ihr Code eine Verbindung schließt, wird die Verbindung an den Pool zurückgegeben, anstatt den Aufwand für das physische Schließen der Verbindung zu durchlaufen. Das bedeutet, dass es eine angemessene Anzahl von Verbindungen zu der Datenbank geben wird, in der der STATUS in V$SESSION zu jedem beliebigen Zeitpunkt "INAKTIV" ist. Das ist völlig normal.

Selbst unter Last sind die meisten Datenbankverbindungen von einer mittleren Schicht die meiste Zeit "INAKTIV". Der Status „INAKTIV“ bedeutet lediglich, dass die Sitzung zum Zeitpunkt der Ausführung der Abfrage keine SQL-Anweisung ausführte. Die meisten Verbindungen verbringen die meiste Zeit entweder im Verbindungspool und warten darauf, dass eine Java-Sitzung sie öffnet, oder warten auf die Java-Sitzung, um etwas mit den Daten zu tun, oder warten auf das Netzwerk, um Daten zwischen den Maschinen zu übertragen.

Erhalten Sie tatsächlich einen Fehler (z. B. ORA-00020:maximale Anzahl von Prozessen überschritten)? Oder verwirrt Sie nur die Anzahl der Einträge in V$SESSION ?