Oracle. Projektowanie rozproszonych baz danych

18
Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: [email protected] PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ IDZ DO IDZ DO ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG KATALOG KSI¥¯EK KATALOG KSI¥¯EK TWÓJ KOSZYK TWÓJ KOSZYK CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK ZAMÓW CENNI K CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE SPIS TRECI SPIS TRECI DODAJ DO KOSZYKA DODAJ DO KOSZYKA KATALOG ONLINE KATALOG ONLINE Oracle. Projektowanie rozproszonych baz danych Autorzy: Robert Wrembel, Bartosz Bêbel ISBN: 83-7197-951-7 Format: B5, stron: 304 W typowych zastosowaniach systemów baz danych wykorzystuje siê architekturê scentralizowan¹, w której system zarz¹dzania baz¹ i wszystkie dane znajduj¹ siê w tym samym wêle sieci informatycznej. Istnieje jednak wiele zastosowañ, w których scentralizowane bazy danych nie zapewniaj¹ wymaganej funkcjonalnoci i efektywnoci pracy. W takich przypadkach stosuje siê tzw. rozproszone bazy danych. Wiele problemów zwi¹zanych z projektowaniem i zarz¹dzaniem scentralizowanymi bazami danych, m.in. projektowanie struktury bazy, przetwarzanie i optymalizacja zapytañ, zarz¹dzanie wspó³bie¿noci¹ transakcji staje siê znacznie trudniejsze w przypadku baz rozproszonych. Najpopularniejszymi systemami umo¿liwiaj¹cymi tworzenie rozproszonych baz danych s¹ systemy firmy Oracle. Funkcjonalnoæ Oracle poci¹ga za sob¹ du¿¹ z³o¿onoæ oprogramowania. Niniejsza ksi¹¿ka stanowi kompendium wiedzy niezbêdnej do projektowania rozproszonych baz danych, opartych na Oracle, a tak¿e potrzebnej do administrowania takimi bazami. Tematy poruszone w ksi¹¿ce to m.in.: • Architektura rozproszonych baz danych • Oprogramowanie komunikacji sieciowej Oracle Net • Procesy komunikacji sieciowej Oracle • Zarz¹dzanie transakcjami rozproszonymi • Replikacja danych: migawki i zaawansowane sposoby replikacji • Oracle9i Lite — rozproszona baza danych dla urz¹dzeñ mobilnych • Optymalizacja zapytañ rozproszonych • Partycjonowanie tabel i indeksów Ksi¹¿ka jest adresowana do administratorów rozproszonych baz danych (nie tylko systemu Oracle), szerokiego grona informatyków, zajmuj¹cych siê projektowaniem rozproszonych systemów informatycznych opartych na bazach danych, studentów kierunków zwi¹zanych z informatyk¹ oraz wszystkich tych, którzy interesuj¹ siê problematyk¹ rozproszonych baz danych.

description

W typowych zastosowaniach systemów baz danych wykorzystuje się architekturę scentralizowaną, w której system zarządzania bazą i wszystkie dane znajdują się w tym samym węźle sieci informatycznej. Istnieje jednak wiele zastosowań, w których scentralizowane bazy danych nie zapewniają wymaganej funkcjonalności i efektywności pracy. W takich przypadkach stosuje się tzw. rozproszone bazy danych.Wiele problemów związanych z projektowaniem i zarządzaniem scentralizowanymi bazami danych, m.in. projektowanie struktury bazy, przetwarzanie i optymalizacja zapytań, zarządzanie współbieżnością transakcji staje się znacznie trudniejsze w przypadku baz rozproszonych.Najpopularniejszymi systemami umożliwiającymi tworzenie rozproszonych baz danych są systemy firmy Oracle. Funkcjonalność Oracle pociąga za sobą dużą złożoność oprogramowania. Niniejsza książka stanowi kompendium wiedzy niezbędnej do projektowania rozproszonych baz danych, opartych na Oracle, a także potrzebnej do administrowania takimi bazami.Tematy poruszone w książce to m.in.:* Architektura rozproszonych baz danych* Oprogramowanie komunikacji sieciowej Oracle Net* Procesy komunikacji sieciowej Oracle* Zarządzanie transakcjami rozproszonymi* Replikacja danych: migawki i zaawansowane sposoby replikacji* Oracle9i Lite - rozproszona baza danych dla urządzeń mobilnych* Optymalizacja zapytań rozproszonych* Partycjonowanie tabel i indeksówKsiążka jest adresowana do administratorów rozproszonych baz danych (nie tylko systemu Oracle), szerokiego grona informatyków, zajmujących się projektowaniem rozproszonych systemów informatycznych opartych na bazach danych, studentów kierunków związanych z informatyką oraz wszystkich tych, którzy interesują się problematyką rozproszonych baz danych. * Projektuj rozproszone bazy danych* Zarządzaj transakcjami w rozproszonych bazach danych* Integruj bazy danych umieszczone na urządzeniach przenośnych* Wybierz właściwą metodę replikacji danych rozproszonych

Transcript of Oracle. Projektowanie rozproszonych baz danych

Page 1: Oracle. Projektowanie rozproszonych baz danych

Wydawnictwo Helion

ul. Chopina 6

44-100 Gliwice

tel. (32)230-98-63

e-mail: [email protected]

PRZYK£ADOWY ROZDZIA£PRZYK£ADOWY ROZDZIA£

IDZ DOIDZ DO

ZAMÓW DRUKOWANY KATALOGZAMÓW DRUKOWANY KATALOG

KATALOG KSI¥¯EKKATALOG KSI¥¯EK

TWÓJ KOSZYKTWÓJ KOSZYK

CENNIK I INFORMACJECENNIK I INFORMACJE

ZAMÓW INFORMACJEO NOWO�CIACH

ZAMÓW INFORMACJEO NOWO�CIACH

ZAMÓW CENNIKZAMÓW CENNIK

CZYTELNIACZYTELNIA

FRAGMENTY KSI¥¯EK ONLINEFRAGMENTY KSI¥¯EK ONLINE

SPIS TRE�CISPIS TRE�CI

DODAJ DO KOSZYKADODAJ DO KOSZYKA

KATALOG ONLINEKATALOG ONLINE

Oracle. Projektowanierozproszonych baz danych

Autorzy: Robert Wrembel, Bartosz Bêbel

ISBN: 83-7197-951-7

Format: B5, stron: 304

W typowych zastosowaniach systemów baz danych wykorzystuje siê architekturê

scentralizowan¹, w której system zarz¹dzania baz¹ i wszystkie dane znajduj¹ siê w tym

samym wê�le sieci informatycznej. Istnieje jednak wiele zastosowañ, w których

scentralizowane bazy danych nie zapewniaj¹ wymaganej funkcjonalno�ci i efektywno�ci

pracy. W takich przypadkach stosuje siê tzw. rozproszone bazy danych.

Wiele problemów zwi¹zanych z projektowaniem i zarz¹dzaniem scentralizowanymi

bazami danych, m.in. projektowanie struktury bazy, przetwarzanie i optymalizacja

zapytañ, zarz¹dzanie wspó³bie¿no�ci¹ transakcji staje siê znacznie trudniejsze

w przypadku baz rozproszonych.

Najpopularniejszymi systemami umo¿liwiaj¹cymi tworzenie rozproszonych baz danych

s¹ systemy firmy Oracle. Funkcjonalno�æ Oracle poci¹ga za sob¹ du¿¹ z³o¿ono�æ

oprogramowania. Niniejsza ksi¹¿ka stanowi kompendium wiedzy niezbêdnej do

projektowania rozproszonych baz danych, opartych na Oracle, a tak¿e potrzebnej

do administrowania takimi bazami.

Tematy poruszone w ksi¹¿ce to m.in.:

• Architektura rozproszonych baz danych

• Oprogramowanie komunikacji sieciowej Oracle Net

• Procesy komunikacji sieciowej Oracle

• Zarz¹dzanie transakcjami rozproszonymi

• Replikacja danych: migawki i zaawansowane sposoby replikacji

• Oracle9i Lite — rozproszona baza danych dla urz¹dzeñ mobilnych

• Optymalizacja zapytañ rozproszonych

• Partycjonowanie tabel i indeksów

Ksi¹¿ka jest adresowana do administratorów rozproszonych baz danych (nie tylko

systemu Oracle), szerokiego grona informatyków, zajmuj¹cych siê projektowaniem

rozproszonych systemów informatycznych opartych na bazach danych, studentów

kierunków zwi¹zanych z informatyk¹ oraz wszystkich tych, którzy interesuj¹ siê

problematyk¹ rozproszonych baz danych.

Page 2: Oracle. Projektowanie rozproszonych baz danych

Spis treści

Wstęp ............................................................................................... 9

Rozdział 1. Architektura rozproszonej bazy danych ............................................. 13Architektura rozproszonej bazy danych............................................................................13

Specjalizowane oprogramowanie sieciowe ................................................................14Łącznik bazy danych...................................................................................................14Perspektywa ................................................................................................................15Synonim ......................................................................................................................15Migawka .....................................................................................................................15

Nazewnictwo baz danych w sieci......................................................................................15Domena i nazwa globalna...........................................................................................16Nazwa usługi bazy danych..........................................................................................17

Rozdział 2. Oprogramowanie komunikacji sieciowej Oracle Net........................... 19Komunikacja: aplikacja — baza danych...........................................................................20Dostęp do zbioru nazw usług ............................................................................................20

Lokalny zbiór nazw usług...........................................................................................22Katalogowa baza danych LDAP.................................................................................23Serwer nazw — Oracle Names ...................................................................................24Adresowanie serwera ..................................................................................................24Zewnętrzny serwis katalogowy...................................................................................25

Konfigurowanie lokalnego zbioru nazw usług..................................................................25Plik sqlnet.ora .............................................................................................................25Plik tnsnames.ora ........................................................................................................26Net Manager — konfigurowanie środowiska klienta .................................................29

Konfigurowanie katalogowej bazy danych .......................................................................29Elementy schematu katalogowej bazy danych ...........................................................30Instalacja Oracle Internet Directory............................................................................32Narzędzia Oracle Internet Directory...........................................................................33Konfigurowanie katalogowej bazy danych dla Oracle Net ........................................36

Konfigurowanie procesu listener ......................................................................................42Plik konfiguracyjny listener.ora..................................................................................42Zarządzanie procesami nasłuchu ................................................................................45Testowanie połączenia z procesem nasłuchu..............................................................48Net Manager — konfigurowanie procesu listener ......................................................49Nazewnictwo usług baz danych — podsumowanie....................................................50

Page 3: Oracle. Projektowanie rozproszonych baz danych

4 Oracle. Projektowanie rozproszonych baz danych

Connection Manager .........................................................................................................50Heterogeniczność protokołów ....................................................................................51Koncentracja połączeń ................................................................................................51Współdziałanie z zaporą sieciową ..............................................................................52Translacja adresów sieciowych...................................................................................56Zarządzanie Connection Managerem .........................................................................58

Rozdział 3. Procesy Oracle komunikacji sieciowej .............................................. 59Dedykowany proces usługowy..........................................................................................59Czuwający proces usługowy .............................................................................................60

Konfigurowanie procesu nasłuchu..............................................................................61Współdzielony proces usługowy.......................................................................................62

Konfigurowanie współdzielonych procesów usługowych................................................63Rozmiar pamięci procesów usługowych...........................................................................64Informacje o aktualnej architekturze pracy instancji bazy danych ...................................66Zarządzanie parametrami pracy instancji w architekturzewspółdzielonych procesów usługowych.........................................................................68

Wybór typu procesu usługowego......................................................................................69Wykrywanie nieaktywnych połączeń................................................................................70

Rozdział 4. Zdalny dostęp do danych ................................................................. 71Łącznik bazy danych.........................................................................................................71

Definiowanie łącznika ................................................................................................71Informacje słownikowe...............................................................................................75Nazwy łączników a nazwa globalna bazy danych......................................................76Zarządzanie łącznikami ..............................................................................................78

Perspektywa ......................................................................................................................78Definiowanie perspektywy .........................................................................................79Wyzwalacz instead-of perspektywy ...........................................................................80Informacje słownikowe...............................................................................................82

Synonim ............................................................................................................................82Definiowanie synonimu ..............................................................................................82Informacje słownikowe...............................................................................................83

Rozdział 5. Zarządzanie transakcjami rozproszonymi........................................... 85Transakcja — pojęcia podstawowe...................................................................................85

Własności transakcji ...................................................................................................86Synchronizacja transakcji ...........................................................................................86Blokowanie danych.....................................................................................................87Tryby pracy transakcji ................................................................................................88

Transakcja rozproszona — pojęcia podstawowe ..............................................................88Węzły uczestniczące w transakcji rozproszonej .........................................................89Graf wywołań transakcji .............................................................................................90

Protokół zatwierdzania dwufazowego ..............................................................................91Faza przygotowania ....................................................................................................91Faza zatwierdzania......................................................................................................92Faza zakończenia ........................................................................................................93

Awarie transakcji rozproszonych ......................................................................................93Automatyczne odtwarzanie transakcji ........................................................................94Manualne odtwarzanie transakcji ...............................................................................95Programowe symulowanie awarii...............................................................................96

Opisywanie transakcji .......................................................................................................97Analizowanie informacji na temat transakcji rozproszonych ...........................................98

Perspektywa DBA_2PC_PENDING ..........................................................................99Perspektywa DBA_2PC_NEIGHBORS...................................................................101

Page 4: Oracle. Projektowanie rozproszonych baz danych

Spis treści 5

Przykładowa sesja odtwarzania transakcji rozproszonej ................................................102Szeregowanie transakcji rozproszonej i transakcji w lokalnych bazach danych ............109

Rozdział 6. Replikacja danych — migawki........................................................ 111Odświeżanie replik..........................................................................................................111Migawka — perspektywa zmaterializowana ..................................................................112

Moment wypełniania migawki danymi ....................................................................114Specyfikacja sposobu odświeżania ...........................................................................114Moment i częstotliwość odświeżania........................................................................117Typ migawki .............................................................................................................121Implementacja migawki............................................................................................122Rejestrowanie migawki w zdalnej bazie danych ......................................................123Fizyczne parametry składowania migawki ...............................................................124Modyfikowanie i usuwanie migawki........................................................................126Informacje słownikowe.............................................................................................127

Dziennik migawki ...........................................................................................................129Definiowanie dziennika ............................................................................................129Implementacja dziennika ..........................................................................................132Fizyczne parametry składowania dziennika .............................................................133Modyfikowanie i usuwanie dziennika ......................................................................134Informacje słownikowe.............................................................................................134

Grupa odświeżania ..........................................................................................................136Zarządzanie grupą odświeżania ................................................................................136Informacje słownikowe.............................................................................................137

Rozdział 7. Zaawansowana replikacja .............................................................. 139Obiekty zaawansowanej replikacji..................................................................................140Typy środowisk zaawansowanej replikacji.....................................................................141

Replikacja multimaster .............................................................................................141Replikacja migawkowa.............................................................................................141Replikacja hybrydowa (mieszana)............................................................................141

Propagacja zmian ............................................................................................................141Zarządzanie środowiskiem replikacji..............................................................................142Schemat tabel z przykładów............................................................................................143Replikacja multimaster....................................................................................................143

Kiedy stosować replikację multimaster? ..................................................................144Architektura replikacji multimaster ..........................................................................145Proces replikacji multimaster....................................................................................152Parametry konfiguracyjne węzła w replikacji multimaster ......................................157Tworzenie środowiska replikacji multimaster ..........................................................157Replikacja proceduralna............................................................................................170

Replikacja migawkowa ...................................................................................................172Kiedy stosować replikację migawkową? ..................................................................174Architektura replikacji migawkowej.........................................................................174Proces replikacji migawkowej ..................................................................................177Tworzenie środowiska replikacji migawkowej ........................................................178

Wykrywanie i rozwiązywanie konfliktów ......................................................................187Rodzaje konfliktów...................................................................................................188Wykrywanie konfliktów ...........................................................................................190Rozwiązywanie konfliktów ......................................................................................190

Monitorowanie środowiska zaawansowanej replikacji...................................................201Lista transakcji w kolejce odroczonych transakcji ...................................................201Lista transakcji w kolejce błędów.............................................................................201Lista wywołań replikowanych procedur...................................................................202Harmonogram zadań.................................................................................................202

Page 5: Oracle. Projektowanie rozproszonych baz danych

6 Oracle. Projektowanie rozproszonych baz danych

Podstawowe operacje administracyjne środowiska zaawansowanej replikacji ..............203Zmiana węzła definicyjnego dla nadrzędnej grupy replikacji ..................................203Usunięcie węzła nadrzędnego ze środowiska zaawansowanej replikacji.................203Usunięcie obiektu z nadrzędnej grupy replikacji......................................................204Usunięcie nadrzędnej grupy replikacji......................................................................204Usunięcie migawki z grupy migawek.......................................................................205Usunięcie grupy migawek.........................................................................................205

Replication Management Tool ........................................................................................206Uprawnieni użytkownicy ..........................................................................................207Budowa narzędzia.....................................................................................................207Przegląd funkcji narzędzia ........................................................................................207Tworzenie środowiska replikacji multimasterprzy użyciu Replication Management Tool ...........................................................209

Rozdział 8. Oracle9i Lite — rozproszona baza danychna urządzeniach mobilnych............................................................. 219Cechy i architektura systemu Oracle9i Lite ................................................................220

Klient i serwer Lite..................................................................................................220Branch Office............................................................................................................221

Mobile Development Kit — projektowanie aplikacji dla Lite........................................222Narzędzia programowe .............................................................................................222Udostępnianie aplikacji.............................................................................................223

Mobile Server — zarządzanie użytkownikami i aplikacjami mobilnymi.......................231Zarządzanie użytkownikami .....................................................................................231Zarządzanie aplikacjami ...........................................................................................232Instalowanie aplikacji na urządzeniu mobilnym.......................................................232

Synchronizacja danych i aplikacji...................................................................................236Wstępna ocena Oracle9i Lite ..........................................................................................238

Rozdział 9. Optymalizacja zapytań rozproszonych ............................................. 239Rodzaje optymalizacji poleceń........................................................................................240Wybór optymalizatora i celu optymalizacji ....................................................................240Generowanie statystyk ....................................................................................................241Wskazówki dla optymalizatora kosztowego ...................................................................242Algorytmy łączenia tabel ................................................................................................243

Nested-loops .............................................................................................................243Sort-merge.................................................................................................................243Hash-join...................................................................................................................244

Analiza planu wykonania zapytania................................................................................244Polecenie explain plan ..............................................................................................244Dyrektywa autotrace .................................................................................................246SQLTRACE i tkprof .................................................................................................247

Wykonywanie zapytań rozproszonych............................................................................248Środowisko testowe ..................................................................................................249Filtrowanie danych z jednej tabeli zdalnej................................................................250Grupowanie i sortowanie danych z tabeli zdalnej ....................................................251Łączenie tabeli lokalnej i zdalnej..............................................................................252Łączenie tabel w tej samej zdalnej bazie danych......................................................254Łączenie tabeli lokalnej i wielu tabel zdalnych ........................................................255Wykorzystanie wskazówek w łączeniu tabel............................................................259Podzapytania .............................................................................................................263

Page 6: Oracle. Projektowanie rozproszonych baz danych

Spis treści 7

Rozdział 10. Partycjonowanie danych ................................................................ 265Algorytmy partycjonowania danych ...............................................................................266Partycjonowanie tabel .....................................................................................................267

Partycjonowanie bazujące na wartości .....................................................................267Partycjonowanie haszowe.........................................................................................270Partycjonowanie hybrydowe.....................................................................................271Fizyczne parametry składowania tabel partycjonowanych.......................................272Wykorzystanie tabel partycjonowanych w poleceniach select i DML.....................273Zarządzanie tabelami partycjonowanymi .................................................................273Informacje słownikowe.............................................................................................276

Partycjonowanie indeksów..............................................................................................278Typy indeksów..........................................................................................................279Zarządzanie indeksami partycjonowanymi...............................................................280Informacje słownikowe.............................................................................................281

Bibliografia .................................................................................... 283

Skorowidz...................................................................................... 287

Page 7: Oracle. Projektowanie rozproszonych baz danych

Rozdział 3.

Procesy Oraclekomunikacji sieciowej

Komunikacja między każdą aplikacją użytkownika a bazą danych odbywa się za pośred-nictwem tzw. procesu usługowego (ang. server process). Jego rolą jest obsługa żądańużytkowników. Do jego zadań m.in. należy:

� wykonywanie analizy składniowej i optymalizacja poleceń SQL;

� wykonywanie poleceń SQL;

� odczytywanie żądanych danych z dysku i umieszczanie ich w pamięci SGA— por. [WJZ99, LoKo02, LoTh02, O9Con];

� przekazywanie wyników poleceń SQL do aplikacji użytkowników.

W SZBD Oracle procesy usługowe mogą pracować w trzech następujących konfigu-racjach: procesów dedykowanych, procesów czuwających i procesów współdzielonych.Wszystkie trzy typy procesów omówione zostaną w niniejszym rozdziale.

Dedykowany proces usługowy

W standardowej konfiguracji klient-serwer, dla każdej aplikacji użytkownika jest two-rzony jeden proces usługowy, za pomocą którego realizowany jest dla tej aplikacji dostępdo bazy danych. Jest to tzw. architektura systemu z dedykowanymi procesami usłu-

gowymi (ang. dedicated servers). Została ona przedstawiona na rysunku 3.1.

W powyższej architekturze komunikacja między aplikacją użytkownika a bazą danychprzebiega w czterech następujących krokach. W kroku 1. przez aplikację użytkownikazostaje nawiązane połączenie z konkretnym procesem nasłuchującym — listener. Poodebraniu żądania listener tworzy nowy dedykowany proces usługowy do obsługiżądań użytkownika (krok 2.). W kroku 3. listener przesyła do aplikacji adres i numer

Page 8: Oracle. Projektowanie rozproszonych baz danych

60 Oracle. Projektowanie rozproszonych baz danych

Rysunek 3.1.

Komunikacja

między aplikacją

użytkownika

a bazą danych

w architekturze

z dedykowanymi

procesami usługowymi

portu komunikacyjnego dedykowanego procesu usługowego. Po otrzymaniu tegoadresu zostaje nawiązane przez aplikację bezpośrednie połączenie ze wskazanym pro-cesem usługowym (krok 4.).

Standardowa konfiguracja listenera, omówiona w rozdziale 2., zapewnia pracę w archi-tekturze dedykowanych procesów usługowych.

Czuwający proces usługowy

Rozszerzenie konfiguracji systemu z serwerami dedykowanymi stanowi tzw. archi-tektura z czuwającymi procesami usługowymi (ang. prespawned servers). W tymprzypadku listener, po jego uruchomieniu, tworzy pulę aktywnych procesów usługo-wych, gotowych do obsługi żądań użytkowników. W momencie pojawienia się żąda-nia jeden z wolnych procesów czuwających przydzielany jest do obsługi tego żądania.Ponieważ proces czuwający jest natychmiast gotowy do pracy, odpowiedź systemu jestszybsza. Przykładowa architektura systemu z czuwającymi procesami usługowymizostała przedstawiona na rysunku 3.2.

Rysunek 3.2.

Komunikacja

między aplikacją

użytkownika

a bazą danych

w architekturze

czuwających

procesów usługowych

Komunikacja między aplikacją użytkownika a bazą danych przebiega podobnie, jakw przypadku przedstawionym na rysunku 3.1. W kroku 1. przez aplikację użytkownikazostaje nawiązane połączenie z procesem listener. Po odebraniu żądania przez proceslistener zostaje wybrany jeden z dostępnych procesów usługowych (krok 2.), a jegoadres i numer portu jest przekazywany do aplikacji (krok 3.). Po otrzymaniu tego adresuprzez aplikację zostaje nawiązane bezpośrednie połączenie ze wskazanym procesemusługowym (krok 4.). W kroku 5. przez proces listener tworzony jest nowy procesusługowy, który zostaje dodany do puli dostępnych aktywnych procesów.

Page 9: Oracle. Projektowanie rozproszonych baz danych

Rozdział 3. ♦ Procesy Oracle komunikacji sieciowej 61

Konfigurowanie procesu nasłuchu

W celu skonfigurowania listenera w architekturze z czuwającymi procesami usługo-wymi należy w pliku listener.ora umieścić zbiór parametrów, określających dla każdegoprotokołu m.in. maksymalną liczbę procesów usługowych, pulę aktywnych procesówi czas istnienia procesu po jego wykorzystaniu. Przykładową zawartość pliku listener.oraprzedstawiono poniżej.

����������������� �������������������� ����������������������������������������� ����������� ���������������������� ������ !������������������

������������������������������������������������"��#����#��$�����#%!&��& ����������������$����'(����)*(���%!�������������$�����#%!������� ��� �+��$�,��!-������� ��� �+��������������� ��� �+������������������ ����������� ������������ ������.����-��������������$��/�����������������������������

W powyższym przykładzie dla instancji LAB92 wyspecyfikowano maksymalnie 20procesów czuwających (parametr ������������� �). Dla połączeń za pomocą pro-tokołu TCP/IP pula aktywnych procesów wynosi 10 (parametr �����������). Parametr�������� oznacza czas istnienia (w minutach) procesu usługowego po jego wykorzy-staniu przez aplikację użytkownika. Po upłynięciu tego czasu proces jest usuwanyz systemu.

Liczba czuwających procesów usługowych, tworzonych w momencie startowania pro-cesu nasłuchowego, jest widoczna na ekranie po wydaniu polecenia ������������������ �!�"�#. Poniżej przedstawiono fragment informacji wyświetlanych w czasiestartowania listenera, skonfigurowanego jak wyżej. Można zauważyć, że po uruchomie-niu listenera tworzonych jest 11 procesów usługowych, z których 10 jest czuwających.

�'(0)�1���)������&&&��23��24��*��1�)�1�'�3���24��2*5�6�&&&��������7���8!�����+�1����'�9*����1�%&!&-&�&-��� ���:����1 )�5�3���;*��<���=��*;��=���>*����'(����)*(���%!(1*����5(��;�1()���*1*�&�����������?/��/�������������������������)�������������������������������

Page 10: Oracle. Projektowanie rozproszonych baz danych

62 Oracle. Projektowanie rozproszonych baz danych

&&&���@:���3:15�<��5�A���=�����3���:;���1�*&&&�������� ����������� ���������3�������������������� ���� !���� ���:;���1�*�:�@:B&&&/�@:B��C��#%!&��& C�;��)��2�4��1���1�>���<�1D��&�1���1�>��������������1�/�E��+������� �������������������������������������

Szczegółową informację o procesach usługowych można uzyskać, wydając polecenie:

)�1��)���*�F��*�

Architektura systemu z dedykowanymi procesami czuwającymi powinna być stosowa-na dla niewielkiej i średniej liczby użytkowników. Liczba użytkowników, przy którejkonfiguracja ta zapewnia efektywny dostęp do bazy danych, zależy od mocy oblicze-niowej i pamięci RAM węzła. Każdy nowy proces użytkownika wymaga uruchomieniaodrębnego procesu usługowego, który zajmuje czas procesora i alokuje swoją pamięć.Oznacza to, że nawet silny obliczeniowo węzeł dla dużej liczby równocześnie pracu-jących użytkowników wykorzysta wszystkie swoje zasoby, co z kolei obniży efektyw-ność systemu. Z tych względów Oracle obsługuje tak zwaną architekturę ze współ-dzielonymi procesami usługowymi.

Współdzielony proces usługowy

Instancję bazy danych można również uruchomić w konfiguracji ze współdzielonymi

procesami usługowymi (ang. shared servers), zwanej wcześniej wielowątkową (ang.multi-threaded servers). W konfiguracji tej pojedynczy proces usługowy obsługujeżądania wielu aplikacji użytkowników, natomiast aplikacja łączy się najpierw z tzw.procesem ekspedytora (ang. dispatcher). Zadaniem ekspedytora jest kierowanie żądańaplikacji (np. wykonanie polecenia SQL, wywołanie procedury składowanej) do wol-nego procesu usługowego.

W konfiguracji współdzielonej serwer może wykorzystywać wiele ekspedytorów i wielewspółdzielonych procesów usługowych. Liczba współdzielonych procesów usługowychjest dostosowywana dynamicznie przez SZBD, w zależności od liczby żądań użyt-kowników.

Żądania użytkowników, które zostały przyjęte przez ekspedytor, trafiają do tzw. kolejkizadań do obsługi (ang. request queue). Dla danej instancji bazy danych istnieje tylkojedna taka kolejka i jest ona współdzielona przez wszystkie ekspedytory. Zadania z tejkolejki są następnie pobierane i obsługiwane przez współdzielone procesy usługowe.Kolejka tych zadań jest obsługiwana zgodnie z algorytmem FIFO (first-in-first-out),czyli zadania są obsługiwane w kolejności ich pojawiania się w kolejce. Obsłużonezadania (np. wyniki zapytania) trafiają do odpowiednich kolejek zadań obsłużonych(ang. response queues). Każdy ekspedytor posiada prywatną kolejkę takich zadań.Informacje z kolejki zadań obsłużonych są następnie przesyłane przez ekspedytor doodpowiedniego procesu użytkownika. Kolejka zadań do obsługi, jak i kolejka zadańobsłużonych znajduje się w pamięci SGA instancji bazy danych.

Page 11: Oracle. Projektowanie rozproszonych baz danych

Rozdział 3. ♦ Procesy Oracle komunikacji sieciowej 63

Rysunek 3.3 przedstawia przykładową architekturę pracy współdzielonych procesówusługowych. Żądania użytkowników są kierowane do współdzielonych procesów usłu-gowych P1 i P2 przez jeden ekspedytor D001.

Rysunek 3.3.Współdzieloneprocesy usługowe

Komunikacja między procesem użytkownika a bazą danych została zilustrowana narysunku 3.4. W czasie uruchamiania instancji bazy danych — por. [WJZ99, LoKo02,LoTh02, O9Con] — uruchamiane są procesy ekspedytorów i tworzona jest pula proce-sów usługowych. Adresy dostępnych ekspedytorów są rejestrowane w procesie listener.W kroku 1. żądanie użytkownika jest odbierane przez proces listener. Po odebraniużądania przez proces listener zostaje wybrany najmniej obciążony ekspedytor (krok 2.),a następnie do procesu klienta zostaje wysłane żądanie przełączenia się na wskazanyekspedytor wraz z jego adresem i numerem portu komunikacji (krok 3.). W kroku 4.zostaje przez aplikację użytkownika nawiązane bezpośrednie połączenie ze wskazanymekspedytorem. Każdorazowo po nawiązaniu połączenia z nową aplikacją użytkownikado listenera zostaje przez ekspedytora wysłana informacja o jego obciążeniu (krok 5.).

Rysunek 3.4.Komunikacjamiędzy aplikacjąużytkownikaa bazą danychw architekturzewspółdzielonychprocesów usługowych

Konfigurowanie współdzielonych procesów usługowych

W celu skonfigurowania instancji bazy danych w architekturze ze współdzielonymiprocesami usługowymi należy w pliku konfiguracyjnym instancji bazy danych init-SID.ora — por. [O9Dba, WJZ99] — umieścić zbiór dodatkowych parametrów.

Page 12: Oracle. Projektowanie rozproszonych baz danych

64 Oracle. Projektowanie rozproszonych baz danych

Przykładowy zbiór tych parametrów przedstawiono poniżej. Pierwszy wiersz definiujezbiór 4 ekspedytorów (������$%����&) dla protokołu TCP/IP (�����$����$�). Każdyz ekspedytorów może obsługiwać maksymalnie 100 połączeń ($����$���������).

Drugi wiersz definiuje 1 ekspedytor dla protokołu SPX/IPX. Ekspedytor może obsłu-giwać maksymalnie 20 połączeń. W wersjach wcześniejszych niż Oracle9i zamiastparametru ������$%��� należało wykorzystywać ��������$%���.

��� �������C ��������� ����� �������G��������������--�C��� �������C �������� ,����� ���������������������!-�C

Dodatkowo, specyfikując parametry ekspedytora można jawnie podać adres komputera,na którym ekspedytor będzie pracował, i jawnie zaalokować dla niego numer portu.Poniższy listing definiuje trzy ekspedytory pracujące na komputerze o nazwie dcs-rw-toshiba. Każdy z nich posiada jednak inny port komunikacji: D000 pracuje na porcie3400, D001 na 3401, a D002 na 3402.

��� �������C������� ���������3�������������������� ���8G--����� ���������������������--�C��� �������C������� ���������3�������������������� ���8G-������ ���������������������--�C��� �������C������� ���������3�������������������� ���8G-!����� ���������������������--�C

W pliku initSID.ora poszczególne sekcje ������$%��� muszą być pisane w jednymwierszu.

Liczba współdzielonych procesów usługowych, wykorzystywanych przez instancję, jestkontrolowana za pomocą dwóch parametrów inicjujących: �%�������'��� (�����'���w wersjach wcześniejszych niż Oracle9i) i ���%�������'��� (�������'���w wersjach wcześniejszych niż Oracle9i). Pierwszy z nich określa minimalną liczbęprocesów usługowych, tworzonych w czasie startowania instancji bazy danych i utrzy-mywanych przez nią w czasie pracy. Drugi parametr określa maksymalną liczbę tychprocesów. Maksymalną liczbę ekspedytorów określa parametr ��������$%��� (����������$%��� w wersjach wcześniejszych niż Oracle9i). Przykładowo, poniższeparametry definiują &� procesów usługowych jako minimum i � � jako maksimum,a maksymalna liczba ekspedytorów ustalona jest na ��.

����*���*�F*��G-������������H�;����*�F*��;�I�����*���*�F*���!-�������H�;���;�I��*�F*��;�I����3����*���-�����������H�;���;�I����3����*��

Rozmiar pamięciprocesów usługowych

W architekturze współdzielonych procesów usługowych standardowo każdy procesalokuje pamięć w obszarze współdzielonym (ang. shared pool) pamięci SGA — por.[O9Con, O9Dba, LoKo02, LoTh02]. Rozwiązanie takie nie jest jednak zalecane, ponie-

Page 13: Oracle. Projektowanie rozproszonych baz danych

Rozdział 3. ♦ Procesy Oracle komunikacji sieciowej 65

waż wpływa na zmniejszenie efektywności działania bazy danych. Z tego powodu dlaprocesów usługowych Oracle Corp. zaleca alokowanie odrębnego obszaru pamięcipoza SGA. Rozmiarem tego obszaru steruje parametr konfiguracyjny instancji ���(��������� (���(����� w wersjach wcześniejszych niż Oracle9i). Rozmiar tego ob-szaru dobiera się szacunkowo na podstawie dotychczasowego wykorzystania pamięciprzez procesy usługowe i liczby równoczesnych dołączeń do bazy danych.

Informacje na temat wykorzystania pamięci przez procesy usługowe można odczytaćza pomocą poniższego zapytania, skierowanego do dynamicznych tabel systemowychV$SESSION, V$SESSTAT i V$STATNAME.

�*)*����*��&���J��*��&:�*�1�;*J��������1�;*&1�;*J�����&F�):*7��;�FK�*����1��*��J�����FK�*����������J�����FK����1�;*��1�;*��*�*��*��&�������&����1��������&���������H�1�;*&���������H�1�����1�;*&1�;*��1�L�*����1�:B��;*;��=LJ�L�*����1�:B��;*;��=�;�IL��1�����*��&:�*�1�;*����1���1:))���*���=��*��&���M

Przykładowy wynik zapytania przedstawiono poniżej.

�����������/�����$������$����������������������������9��/��������������������������������������������������������������������%��N����������*����1�:B��;*;��=������������88OO�P���������%��N����������*����1�:B��;*;��=�;�I��������GP%QGG���������!� /�����E����*����1�:B��;*;��=�������������QP%P-���������!� /�����E����*����1�:B��;*;��=�;�I���������QP%P-��������� �����E�������*����1�:B��;*;��=�������������G8 PO��������� �����E�������*����1�:B��;*;��=�;�I�������� Q!Q P���������Q�#���E�������*����1�:B��;*;��=������������� %P-G���������Q�#���E�������*����1�:B��;*;��=�;�I���������8%QOG

SID oznacza identyfikator sesji, USERNAME — nazwę użytkownika bazy danych,NAME — opis wartości kolumny VALUE. VALUE reprezentuje rozmiar zaalokowanejpamięci, mierzony w bajtach. session uga memory reprezentuje aktualnie wykorzysty-wany przez proces usługowy rozmiar pamięci, natomiast session uga memory max re-prezentuje maksymalny rozmiar pamięci, jaki wykorzystano w ramach bieżącej sesji.

Na podstawie powyższego wyniku widzimy, że sesja o numerze 15 wykorzystałamaksymalnie 572756B pamięci, natomiast aktualnie wykorzystuje 43568B. Jeżeliw systemie spodziewanych jest 100 równoczesnych sesji o podobnej charakterystyce,wówczas rozmiar ���(��������� należy wyliczyć jako: 572756 ∗ 100.

Minimalną liczbę ekspedytorów można ustalić na podstawie maksymalnej liczby połą-czeń obsługiwanych przez jeden proces usługowy i na podstawie oczekiwanej liczbyrównoczesnych połączeń. Maksymalna liczba połączeń obsługiwanych przez procesusługowy zależy od systemu operacyjnego. Można ją odczytać po uruchomieniu instan-cji w trybie współdzielonych procesów usługowych, korzystając z polecenia ��������"�)*�"�. Jeżeli w sekcji ������$%��� nie umieścimy parametru $����$�����, wówczasprzyjęta zostanie maksymalna dozwolona liczba połączeń w systemie operacyjnym.

Page 14: Oracle. Projektowanie rozproszonych baz danych

66 Oracle. Projektowanie rozproszonych baz danych

Przykładowo, w poniższy listingu maksymalna liczba procesów wynosi 1002 (wartośćdla Windows XP). Zaleca się jednak unikanie maksymalnego obciążania ekspedytorów.

�'(0)�1���)��*�F��*�

��������7���8!�����+�1����'�9*����1�%&!&-&�&-��� ���:����1�&&&&&&&&&&&&&&&&&&���� ���*�:���=�����@:B�'������C���������C�:���1����1�'-���;<���1�'-����1'�*��=������������������9��������C�---C�:���)�1�'-���;<���1�'-���*RD�*'-�!� "�##�����1'�*��=������������ �������S;����1*'������+������#�J�3��'�!�--0���������������� ���������3�������������������� ���8G--��

Informacje o aktualnej architekturzepracy instancji bazy danych

Informacje o aktualnej architekturze pracy instancji można uzyskać na kilka sposobów.Pierwszy z nich wymaga dołączenia się do bazy danych z poziomu SQL*Plus jakoużytkownik z uprawnieniami DBA. Następnie należy wydać polecenie �+!�� ���,"�"��-*� ���+"��. Jeżeli nie skonfigurowano instancji w architekturze współdzielonychprocesów usługowych, wówczas wartość parametru inicjującego ������$%��� będziepusta, jak przedstawiono w poniższym listingu. Parametry ��������$%��� i ����������$%��� przyjmują w takim przypadku wartości domyślne.

�T�0������3���;*�*������3����*����$�����������������������������������N ���������9��/�������������������������������������������������������������3����*��������������������������������1B;�I����3����*�������������������������1�*B*������ ;������3����*����������������������������1B;���;�I����3����*���������������������1�*B*������

W drugim sposobie wykorzystywane jest polecenie ���������"�)*�"�, jak podanoponiżej. W poniższym listingu znajduje się przykładowy opis czterech ekspedytorówo nazwach D000, D001, D002, D003. Pierwszy z nich obsługuje 2 połączenia ("D000"ustalono:2). Kolejne 2 połączenia są obsługiwane przez procesy dedykowane ("DEDI-CATED" ustanowiono:2).

�������0��*�F��*�?D�2=���4�2������� ����������� ��������� �������������������� ���� !���� ���:;���1�*�:�@:B&&&/�@:B��C��#%!&��& C�;��)��2�4��1���1�>���<�1D��&���1���1�>��C��#%!CJ����1�/�E��+�J�;���)���*>�:�@:B����3���*�:��4J��=������@:B�&&&

���� ���*�:���=�����@:B�'������C���������C�:���)�1�'-���;<���1�'-������������������9�����1���1�>��C��#%!CJ����1�����NJ�;���)���*>�:�@:B�� �3���*�:��4J��=�

Page 15: Oracle. Projektowanie rozproszonych baz danych

Rozdział 3. ♦ Procesy Oracle komunikacji sieciowej 67

�����@:B�&&&���� ���*�:���=�����@:B�'�������$##%��:���)�1�'-���;<���1�'-���*RD�*'-�;�5�&'�--����1'�*��=������������ �������S;����1*'������+������#�J�3��'�!8%!0���������������� ���������3�������������������� ���8GG-���������$##���:���)�1�'-���;<���1�'-���*RD�*'-�;�5�&'�--����1'�*��=������������ �������S;����1*'������+������#�J�3��'�8-G-0���������������� ���������3�������������������� ���8G8%���������$##���:���)�1�'-���;<���1�'-���*RD�*'-�;�5�&'�--����1'�*��=������������ �������S;����1*'������+������#�J�3��'�!G�!0���������������� ���������3�������������������� ���8G8O���������$###���� ��&�"����;<���1�'-���*RD�*'-�;�5�&'�--����1'�*��=������������ �������S;����1*'������+������#�J�3��'�!�!G0���������������� ���������3�������������������� ���8G8P���������$'$()�*'$���� &�+��&�"����;<���1�'-����1'�*��=������������������9�� �)*�*1�*�2�5�A�2�1*�3����2*1�*;

W systemach Unix wydanie polecenia � (np. ��."/) umożliwia wyświetlenie proce-sów systemowych. Instancja w architekturze współdzielonych procesów usługowychbędzie posiadała procesy ekspedytorów o nazwach ora_dxxx_SID.

Kolejnym źródłem informacji na temat architektury współdzielonych procesów usługo-wych są dynamiczne tabele systemowe, m.in. V$DISPATCHER i V$SHARED_SERVER— por. [O9Ref]. Pierwsza z nich udostępnia nazwy i parametry ekspedytorów, a druga— nazwy i parametry współdzielonych procesów usługowych. Przykładowe zapyta-nie do V$DISPATCHER i jego wynik przedstawiono poniżej.

�T�0��*)*���1�;*J�1*����5J�����:�J���17��1�I�7��;�FK���3����*�M

��$�����+��E���������������������������/�������U����,������������������������������������������������������---�������� ���������3������+����������������-�������������������� ���8G--��

�--��������� ���������3������+������������������������������������� ���8G-���

�--!�������� ���������3������+����������������!�������������������� ���8G-!��

Atrybut name oznacza nazwę ekspedytora, network przechowuje parametry wyspecy-fikowane w omówionej wcześniej sekcji �������, status przechowuje aktualny stanpracy ekspedytora. status może przyjąć m.in. jedną z następujących wartości: WAIT —ekspedytor oczekuje na żądanie połączenia, SEND — ekspedytor wysyła wiadomość,RECEIVE — ekspedytor otrzymuje żądanie, CONNECT — nawiązywane jest połą-czenie z aplikacją użytkownika, DISCONNECT — połączenie jest przerywane. Wartośćatrybutu CONF_INDX określa numer parametru inicjującego ������$%���, który posłu-żył do utworzenia ekspedytora. Ekspedytor utworzony na podstawie wartości pierw-szego w kolejności parametru otrzymuje wartość równą 0, ekspedytor utworzony napodstawie drugiego parametru otrzymuje wartość 1 itp. Powyższy wynik otrzymanodla parametrów ������$%��� określonych w sposób przedstawiony poniżej.

��� �������C������� ���������3��������������������� ���8G--����� ���������������������--�C

Page 16: Oracle. Projektowanie rozproszonych baz danych

68 Oracle. Projektowanie rozproszonych baz danych

��� �������C������� ���������3��������������������� ���8G-������ ���������������������--�C��� �������C������� ���������3��������������������� ���8G-!����� ���������������������--�C

Zarządzanie parametramipracy instancji w architekturzewspółdzielonych procesów usługowych

W czasie pracy instancji bazy danych można dynamicznie modyfikować liczbę dzia-łających współdzielonych procesów usługowych i ekspedytorów. Służy do tego celupolecenie ���"���0��",. Przykładowo w Oracle9i za pomocą poniższego poleceniaaktualna liczba procesów usługowych ustalana jest na 1�. We wcześniejszych wersjachsystemu �+��"-�"�)"�� należy zastąpić przez ,���"�)"��.

�T�0��)�*���=��*;��*������*���*�F*��8-M

Liczbę i parametry pracy ekspedytorów modyfikuje się w Oracle9i poleceniem:

�)�*���=��*;��*�����3����*����L����,��17��1�I�3���;*��=�M

We wcześniejszych wersjach systemu -*� ���+"�� należy zastąpić przez ,��-*� ���+"��.

Przykładowo, poniższe polecenie dodaje do systemu jeden ekspedytor o indeksie 3.

�T�0��)�*���=��*;��*�����3����*����!�����L����,8���8������������� ��������� �������������������� ���8G-8����G��������� ���������LM

Dodany ekspedytor pojawia się w systemie i jest widoczny za pomocą V$DISPATCHER.

�T�0��*)*���1�;*J�1*����5J�����:�J���17��1�I�7��;�FK���3����*�M

��$�����+��E���������������������������/�������U����,������������������������������������������������������---�������� ���������3������+����������������-�������������������� ���8G--��

�--��������� ���������3������+������������������������������������� ���8G-���

�--!�������� ���������3������+����������������!�������������������� ���8G-!��

�--8�������� ��������� ������+����������������8�������������������� ���8G-8��

Page 17: Oracle. Projektowanie rozproszonych baz danych

Rozdział 3. ♦ Procesy Oracle komunikacji sieciowej 69

Kolejne przykładowe polecenie umożliwia usunięcie ekspedytora o indeksie 3. Po jegowykonaniu ekspedytor zostanie fizycznie usunięty z systemu z pewnym opóźnieniem.

�T�0��)�*���=��*;��*�����3����*����!��L����,8� ��������� ���� �������-�LM

Wybór typu procesu usługowego

Jeżeli instancja pracuje w trybie współdzielonych procesów usługowych, wówczasprzez aplikację może zostać wskazane, czy do jej obsługi ma być wykorzystany dedy-kowany proces usługowy, czy współdzielony. Wyboru tego dokonuje się, konfiguru-jąc plik tnsnames.ora. Opisany wcześniej parametr ���'�� z wartością DEDICATElub SHARED steruje wyborem procesu usługowego. Poprzez wprowadzenie do plikutnsnames.ora dwóch różnych nazw usług, wskazujących na tę samą bazę danych, leczz różną wartością parametru ���'��, może być dokonany wybór procesu obsługujące-go aplikację właśnie przez wskazanie odpowiedniej usługi. Przykładowy fragment plikutnsnames.ora zawierający taką konfigurację przedstawiono poniżej.

��#%!�����*�&��& ��������� ������������������������������������� ����������� ���������������������� ������ !����������������������������������9��������������������9������$�����#%!���������

��#%!��*�����*�&��& ��������� ������������������������������������� ����������� ���������������������� ������ !����������������������������������9�����������������������9������$�����#%!���������

Jeżeli w pliku sqlnet.ora zostanie umieszczony parametr �������$�������'�����,wówczas dla wszystkich połączeń aplikacji będą alokowane procesy dedykowane, nawetjeśli w definicji usługi parametr ���'�� przyjmuje wartość SHARED. Brak parametru�������$�������'�� lub wpis �������$�������'����22 powoduje alokowanie pro-cesów usługowych zgodnie z konfiguracją instancji i wartością parametru ���'��.

Page 18: Oracle. Projektowanie rozproszonych baz danych

70 Oracle. Projektowanie rozproszonych baz danych

Wykrywanie nieaktywnych połączeń

Raz nawiązane połączenie między procesem usługowym a aplikacją wykorzystujezasoby systemowe. W przypadku zerwania połączenia z aplikacją, np. na skutek brakupołączenia sieciowego, awarii komputera użytkownika lub aplikacji, proces ją obsłu-gujący staje się nieaktywny (ang. dead) i powinien zostać usunięty z systemu. Częstow przypadku tego typu awarii dane w bazie są blokowane przez transakcję użytkow-nika. Usunięcie nieaktywnego procesu powoduje wycofanie transakcji i zwolnieniewszystkich wykorzystywanych przez nią blokad.

Proces testowania aktywności aplikacji użytkownika (ang. dead connection detection)jest realizowany przez Oracle Net. Oprogramowanie to wysyła pakiety testowe za pomo-cą każdego z połączeń. Częstotliwość próbkowania jest określona parametrem kon-figuracyjnym �3����4��������� pliku sqlnet.ora. Jego wartość podaje się w minutach.Przykładowo, wpis �3����4������������ oznacza próbkowanie co 10 minut. Jest towartość zalecana w dokumentacji Oracle [O9NAG]. W domyślnej konfiguracji pliksqlnet.ora nie zawiera parametru �3����4���������, a więc nieaktywne połączenianie są wykrywane.