Сегодня, поскольку машина узла ETL хочет получить доступ к новому серверу базы данных, ей необходимо настроить tnsnames.ora, и после настройки результата при подключении к базе данных сообщается об ошибке:
ORA-12547: TNS:lost contact
Сначала я думал, что это неправильно настроен tnsnames.ora, но после сравнения и проверки эта возможность была исключена. Потому что такая же конфигурация на других хостах проверена для подключения к этому серверу базы данных.
Далее я искал много информации в Интернете по ошибке «ORA-12547: TNS: потерян контакт», некоторые говорили о недостатке программных пакетов, другие — что есть проблема с настройками файлов на базе данных, но они не совпадали с ситуацией, с которой я столкнулся на этот раз.
Позже я решил посмотреть журналы, проверил журнал мониторинга 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), иначе ошибка всё равно будет зафиксирована. |