Днес, тъй като машината ETL възел иска да достъпи нов сървър за база данни, тя трябва да конфигурира tnsnames.ora, и след като резултатът е конфигуриран, се докладва грешка при свързване с базата данни:
ORA-12547: TNS:lost contact
Първоначално мислех, че е неправилно конфигуриран tnsnames.ora, но след сравнение и проверка тази възможност беше изключена. Защото същата конфигурация на други хостове е проверена за свързване с този сървър за база данни.
След това потърсих много информация в интернет според тази грешка "ORA-12547: TNS: lost contact", някои казаха, че липсват софтуерни пакети, а други – че има проблем с настройките за разрешение на файла на хоста на базата данни, но те не съответстваха на ситуацията, която се сблъска този път.
По-късно реших да разгледам логовете, проверих мониторинговия лог listener.log на базата данни и открих, че в нея има следните съобщения за грешка: 20-МАЙ-2016 15:46:03 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=db01)(USER=grid))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=186647552)) * статус * 0 Входящата връзка от 192.168.24.1 е отхвърлена 20-МАЙ-2016 15:46:06 * 12546
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error TNS-00516: Разрешението е отказано
и провери конфигурацията sqlnet.ora на сървъра на базата данни и установи, че причината е, че е зададено ограничението за IP адрес на достъп до базата данни, тоест само посоченият IP може да има достъп до базата данни.
Тъй като е двувъзела RAC база данни, модифицирането на sqlnet.ora под грид потребителя означава добавяне на IP адреса на ETL възела към IP белия списък за достъп до базата данни. След модификация, рестартирайте слушането (lsnrctl reload), иначе ще се докладва грешка. |