Oracle Listener
Oracle Listener jest komponentem odpowiedzialnym za komunikację pomiędzy serwerem baz danych a klientami. Nasłuchuje standardowo na porcie TCP 1521. Proces użytkownika komunikuje się z listenerem, który uruchamia proces serwera (jeżeli TCP to OS przydziela mu wolny port przez algorytm mapowania portów) następnie adres portu zostaje przesłany do procesu użytkownika . Dalsza komunikacja przebiega już tym portem pomiędzy procesem użytkownika a odpowiadającym mu procesem serwera. Listener jest potrzebny tylko do ustanowienia połączenia.
Podstawowe polecenia:
lsnrctl status lsnrctl reload lsnrctl stop lsnrctl start
lub:
Wchodzimy do powłoki listenera:
lsnrctl
i teraz będą w powłoce wydajemy polecenia:
start,stop,status,reload
Binaria:
$ORACLE_HOME/bin/lsnrctl Np.: /u01/app/oracle/product/11.1.0/db_1/bin/lsnrctl
Logi:
$ORACLE_HOME/network/log/sqlnet.log Np.: /u01/app/oracle/product/11.1.0/db_1/network/log/sqlnet.log $ORACLE_BASE/oracle/diag/tnslsnr/nazwa_hosta/nazwa_listenera/trace/nazwa_listenera.log Np.: /u01/app/oracle/diag/tnslsnr/oracled/listener/trace/listener.log
Konfiguracja:
Lokalizacja:
$ORACLE_HOME/network/admin/
Pliki:
LISTENER.ORA - Konfiguracja procesu nasłuchu do bazy TNSNAMES.ORA - Konfiguracja stacji klienckiej SQLNET.ORA - Pozostałe opcje konfiguracyjne.
Parametry konfiguracyjne:
NAMES.DEFAULT_DOMAIN = nazwa_twojej_domeny
Jeżeli ustawisz domyślną domenę (np. costam.com.pl), to wówczas ta domena będzie dołączana automatycznie do każdej, która nie została jawnie wpisana ( np. @magazyn zostanie zinterpretowany jako @magazyn.costam.com.pl ).
LOG_DIRECTORY_CLIENT = /oracle/network/plik_log
Katalog, do którego zostaną zapisane pliki log klienta
Jeżeli zauważysz, że pliki SQLNET.LOG zaśmiecają Ci dysk, pojawiając się w różnych katalogach, to oznacza,że nie ustawiłeś jednego konkretnego katalogu, a wartością domyślną tego parametru jest bieżący katalog.
LOG_DIRECTORY_SERVER = /oracle/network/plik_log
Katalog, do którego zapisywane są pliki log serwera.
SQLNET.AUTHENTICATION_SERVICES = NONE
Usługi identyfikacji hasłem (beq, none, all, NTS, kerberos5, cybersafe, radius).
TRACE_LEVEL_SERVER = OFF
Poziom, na którym ma być śledzony proces serwera (OFF,USER,ADMIN,SUPPORT, 0-16).
TRACE_DIRECTORY_SERVER = /oracle/network/trace
Katalog, do którego trafią pliki śladu z serwera.
TRACE_LEVEL_CLIENT = OFF
Poziom, na którym ma być śledzony w pliku log proces klienta (OFF,USER,ADMIN,SUPPORT, 0-16)
Wartość domyslna: OFF (0).
TRACE_DIRECTORY_CLIENT = /oracle/network/trace
Katalog, do którego trafią pliki śladu klienta.
TNSPING.TRACE_LEVEL = OFF
Poziom, na którym ma być śledzony proces nasłuchu (OFF,USER,ADMIN,SUPPORT, 0-16).
SQLNET.EXPIRE_TIME = 10
Weryfikacja sesji klienta, czy jest aktywna co x minut.
SQLNET.CONNECT_TIMEOUT = 5
Maksymalny czas (w sekundach) oczekiwania na utworzenie połączenia pomiędzy klientem a serwerem. Opcja ta może być użyta,aby ograniczyć efekt ataku typu Do S (Denial of Service) lub Brute Force Dictionary ( wartość zero oznacza wyłączony).
Instalacja / deinstalacja:
Za pomocą polecenia:
netca
Jeśli za pomocą netca nie możemy skasować listenera, musimy zrobić to ręcznie. W windowsie usuwamy usługę OracleOraDb11g_home1TNSListener np. poprzez skasowanie kluczy w rejestrze:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDb11g_home1TNSListener] [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\OracleOraDb11g_home1TNSListener]
Następnie restart windowsa i ponowna instalacja listenera za pomocą netca
Włączanie / wyłączanie logowania:
lsnrctl set Log_status on
lub
lsnrctl set Log_status off
Sprawdzanie czy port listenera 1521 nie jest przez coś zajęty:
Linux: netstat -tpnl |grep 1521 Windows: netstat -abn|more
Błędy:
Objawy:
W logu sqlnet.log komunikat:
ns main err code: 12547 TNS-12547: TNS:stracony kontakt ns secondary err code: 12560 a podczas sprawdzania statusu (lsnrctl status) następowało zawieszenie i brak odpowiedzi.
Rozwiązanie:
Należy sprawdzić czy przypadkiem plik z logami:
$ORACLE_BASE/diag/tnslsnr/nazwa_hosta/nazwa_listenera/trace/nazwa_listenera.log
(np. w windowsie: C:\app\Administrator\diag\tnslsnr\ORACLE1\listener\trace\listener.log) nie jest większa niż:
Systemy 32bitowe: 2GB
Systemy 64bitowe: 4GB
jeśli tak to skasować plik lub zmienić jego nazwę na inną i zrestartować listenera.
W sieci: http://blog.5it.pl/