Сьогодні, оскільки машина вузла 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), інакше помилка все одно буде зареєстрована. |