Obecnie, ponieważ maszyna węzła ETL chce uzyskać dostęp do nowego serwera bazy danych, musi skonfigurować tnsnames.ora, a po skonfigurowaniu wyniku zgłaszany jest błąd podczas łączenia z bazą danych:
ORA-12547: TNS:lost contact
Na początku myślałem, że to błędnie skonfigurowana tnsnames.ora, ale po porównaniu i weryfikacji ta możliwość została wykluczona. Ponieważ ta sama konfiguracja na innych hostach została zweryfikowana, aby łączyć się z tym serwerem bazy danych.
Następnie przeszukałem wiele informacji w Internecie na podstawie tego błędu "ORA-12547: TNS: lost contact", niektórzy twierdzili, że brakuje pakietów oprogramowania, inni zaś o problem z ustawieniami uprawnień do plików na hostze bazy danych, ale nie odpowiadały one sytuacji zaobserwowanej tym razem.
Później postanowiłem przejrzeć logi, sprawdziłem dziennik monitoringu listener.log bazy danych i odkryłem, że pojawiły się w nim następujące komunikaty o błędach: 20-MAY-2016 15:46:03 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=db01)(USER=grid))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=186647552)) * status * 0 Połączenie przychodzące z 192.168.24.1 odrzucone 20-MAJ-2016 15:46:06 * 12546
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error TNS-00516: Pozwolenie odrzucone
oraz sprawdził konfigurację serwera bazy danych sqlnet.ora i stwierdził, że jest to spowodowane ustawieniem ograniczenia dostępu do danych IP, czyli tylko określony adres IP mógł uzyskać dostęp do bazy danych.
Ponieważ jest to dwuwęzłowa baza RAC z dwoma węzłami, modyfikacja sqlnet.ora w użytkowniku grid polega na dodaniu adresu IP węzła ETL do białej listy IP, aby uzyskać dostęp do bazy danych. Po modyfikacji ponownie uruchom nasłuchiwanie (lsnrctl reload), w przeciwnym razie błąd nadal będzie zgłaszany. |