Na czym dokładnie polega problem?
Zwykle serwer aplikacji warstwy środkowej tworzy pulę połączeń. Gdy Twój kod żąda połączenia, otrzymuje już otwarte połączenie z puli, zamiast przechodzić przez obciążenie związane z tworzeniem nowego połączenia z bazą danych. Gdy kod zamyka połączenie, połączenie jest zwracane do puli, a nie przechodzi przez obciążenie fizyczne zamknięcie połączenia. Oznacza to, że będzie rozsądna liczba połączeń z bazą danych, gdzie STATUS
w V$SESSION
jest „NIEAKTYWNE” w dowolnym momencie. To zupełnie normalne.
Nawet pod obciążeniem większość połączeń z bazą danych z warstwy środkowej jest przez większość czasu „NIEAKTYWNA”. Status „INACTIVE” oznacza jedynie, że w chwili uruchomienia zapytania sesja nie wykonywała instrukcji SQL. Większość połączeń spędza większość czasu albo siedząc w puli połączeń, czekając na sesję Java, aby je otworzyć, albo czekając na sesję Java, aby zrobić coś z danymi lub czekając w sieci na przesłanie danych między maszynami.
Czy rzeczywiście pojawia się błąd (np. ORA-00020:przekroczono maksymalną liczbę procesów)? A może po prostu zdezorientowała Cię liczba wpisów w V$SESSION
?