Oracle Database Understanding Dead Connection Detection, Resource Limits, V $ SESSION, V $ PROCESS i OS

  • Vovich Masterovich
  • 0
  • 2242
  • 342

Wykrywanie martwego połączenia (DCD)

Są to wcześniej prawidłowe połączenia z bazą danych, ale połączenie między procesami klienta i serwera zostało nieprawidłowo zakończone.

Przykłady martwego połączenia:
- Użytkownik restartuje / wyłącza komputer bez wylogowywania się lub odłączania od bazy danych.
- Problem z siecią uniemożliwia komunikację między klientem a serwerem.

W takich przypadkach proces w tle działający na serwerze i sesja w bazie danych mogą się nie zakończyć.

Wprowadzony przez

* dodanie SQLNET.EXPIRE_TIME = [MINUTY] do pliku sqlnet.ora 

Po włączeniu DCD proces po stronie serwera wysyła mały 10-bajtowy pakiet do procesu klienta po upływie przedziału czasu określonego w minutach przez parametr SQLNET.EXPIRE_TIME.

Jeśli połączenie po stronie klienta jest nadal połączone i odpowiada, klient odrzuca pakiet sondujący… a kolejny pakiet zostanie wysłany po wygaśnięciu następnego interwału (zakładając, że nie ma innej aktywności na połączeniu).

Jeśli klient zawiedzie, a system operacyjny klienta odeśle błąd w odpowiedzi na pakiet sondy DCD

  • proces po stronie serwera jest oznaczony jako martwe połączenie i
  • PMON oczyszcza procesy / zasoby bazy danych
  • Procesy systemu operacyjnego klienta są przerywane
UWAGA: SQLNET.RECV_TIMEOUT można ustawić w pliku sqlnet.ora po stronie SERWERA. Spowoduje to ustawienie limitu czasu oczekiwania procesu serwera na dane z procesu klienta.

Nieaktywne sesje

Są to sesje, które pozostają połączone z bazą danych ze statusem v $ sesja INACTIVE. W przypadku sesji nieaktywnych i nie martwego połączenia użyj poniższego profilu lub metody menedżera zasobów do sterowania.

Przykład sesji NIEAKTYWNEJ:
- Użytkownik uruchamia program / sesję, a następnie pozostawia go uruchomionego i bezczynnego przez dłuższy czas.

Limity zasobów bazy danych (przy użyciu profili użytkowników)

Wprowadzony przez:

  • Ustawienie RESOURCE_LIMIT = TRUE w pliku parametrów startowych bazy danych (spfile lub pfile)
  • Tworzenie lub modyfikowanie istniejących profili użytkowników (DBA_PROFILES), aby mieć co najmniej jeden limit zasobów
  • Przypisanie profilu użytkownikowi, którego zasoby mają być ograniczone

Może się zdarzyć, że jeśli idle_time został ustawiony w profilu DEFAULT, może to prowadzić do ustawienia dyspozytora MTS na „sniped”, a następnie „wyczyszczenia” za pomocą skryptu powłoki. Usunięcie dyspozytora spowoduje „wymarcie” innych sesji. W takim przypadku, jeśli chcesz zaimplementować ograniczenia zasobów, może być wskazane utworzenie nowych profili, które zostaną przypisane do użytkowników, a nie zmiana charakterystyki DEFAULT. Alternatywnie, jeśli zmienisz DEFAULT, upewnij się, że wszystkie właściwości, na które masz wpływ, zostały w pełni przetestowane w środowisku programistycznym.

W przypadku przekroczenia limitu zasobów (na przykład IDLE_TIME)… PMON wykonuje następujące czynności

  • Oznacz V $ SESSION jako SNIPED (starsze wersje) lub KILLED (nowsze wersje)
  • Oczyść zasoby bazy danych dla sesji
  • Usuń wpis V $ SESSION

W przypadku przekroczenia limitu zasobów (na przykład IDLE_TIME)… PMON oznacza sesję jako SNIPED w V $ SESSION. Następnie, PO SNIPED próba wykonania dowolnej instrukcji SQL, jej zasoby bazy danych są czyszczone, a jej wpis V $ SESSION jest usuwany.

Menedżer zasobów

Można tworzyć plany menedżera zasobów, aby zabijać nieaktywne sesje z długim czasem bezczynności. Zobacz Jak automatycznie zabijać nieaktywne sesje za pomocą Menedżera zasobów (ID dokumentu 1935739.1). Ten dokument zawiera szczegóły wraz z przykładem. Możesz dostosować dyrektywy planu zgodnie z wymaganiami.

W takim przypadku, gdy nieaktywny czas przekroczy określony MAX_IDLE_TIME, PMON oznacza sesję jako KILLED. Kiedy ta KILLED później próbuje wykonać jakąkolwiek instrukcję SQL, jej zasoby bazy danych są czyszczone, a wpis V $ SESSION jest usuwany.

Zdecydowanie zaleca się zaimplementowanie zarówno DCD, jak i limitów zasobów z profilami, aby oczyścić zasoby zarówno na poziomie bazy danych, jak i systemu operacyjnego..

Ta kombinacja nie usunie IDLE / ABANDONED / INACTIVE połączeń (procesów systemu operacyjnego), ponieważ te sesje nadal mają aktywnych klientów

W tym przypadku zobaczymy, że:

  • PMON wyczyścił wpisy V $ SESSION… ale zarówno procesy systemu operacyjnego, jak i wpisy V $ PROCESS nadal będą istnieć
  • SQLNET będzie nadal mógł pomyślnie wysłać pakiet 10-bajtowy, dopóki sesja nie zostanie wylogowana

Ten stan może być poważnym problemem, ponieważ

  • Baza danych wyczerpuje PROCESY i podaje ORA-20 przekroczoną maksymalną liczbę procesów [liczba]
  • System operacyjny może się wyczerpać z powodu niepotrzebnych zasobów zużytych przez porzucone procesy

OBJAWY tego stanu to:

  • Widok bazy danych V $ PROCESS nie będzie miał odpowiedniego wpisu V $ SESSION
  • Proces / wątek systemu operacyjnego nadal istnieje dla sesji SNIPED

Rozwiązaniem tego scenariusza może być wyczyszczenie procesów systemu operacyjnego… po czym wpisy V $ PROCESS powinny zostać automatycznie usunięte.

Wniosek

1) DCD inicjuje czyszczenie procesów systemu operacyjnego i bazy danych, które zostały nieprawidłowo rozłączone / zakończone.
2) DCD nie zainicjuje sesji czyszczenia, które są nadal połączone… ale są bezczynne / opuszczone / nieaktywne.
3) Limity zasobów bazy danych + profile użytkowników oczyszczają zasoby bazy danych dla sesji użytkowników, które przekraczają limity zasobów.
4) Limity zasobów bazy danych + profile użytkowników nie czyszczą procesów systemu operacyjnego.
5) Jeśli DCD i limity zasobów bazy danych + profile użytkowników są używane w połączeniu… system operacyjny Dead Connections i zasoby bazy danych zostaną wyczyszczone.
6) Sesje IDLE / ABANDONED / INACTIVE Procesy systemu operacyjnego nie zostaną wyczyszczone, nawet jeśli DCD i limity zasobów bazy danych + profile użytkowników są używane w połączeniu… należy je wyczyścić ręcznie.
7) Menedżera zasobów można użyć do zabicia nieaktywnej sesji, która przekracza czas bezczynności wymieniony w dyrektywach planu.




Jeszcze bez komentarzy

Zbiór przydatnych informacji o systemie operacyjnym Linux i nowych technologiach
Świeże artykuły, praktyczne wskazówki, szczegółowe recenzje i poradniki. Poczuj się jak w domu w świecie systemu operacyjnego Linux