Содержание статьи

Ошибка ORA-12560 указывает на сбой протокольного адаптера при попытке подключения к базе данных Oracle. Она возникает, когда клиент не может установить соединение с сервером, несмотря на корректный логин и пароль. Чаще всего причина связана с некорректной настройкой Oracle Net Listener, переменных окружения или сетевых параметров.
Одной из частых причин является отсутствие запущенной службы Oracle Net Listener. Без активного слушателя сервер не принимает соединения, что сразу приводит к появлению ошибки ORA-12560. Рекомендуется проверять статус службы через команду lsnrctl status и при необходимости выполнять перезапуск.
Другой распространенный источник проблемы – неверные параметры в файле tnsnames.ora или конфликтующие версии клиента Oracle. Неправильный путь к серверу, некорректный порт или отсутствие разрешений на сетевые ресурсы блокируют соединение. Проверка и корректировка этих настроек позволяет устранить ошибку без переустановки базы.
Использование команд tnsping и проверка сетевой доступности сервера помогают быстро диагностировать причину сбоя. Эти инструменты показывают, доступен ли указанный хост и правильно ли настроен протокол соединения. Комбинация проверки служб, конфигурационных файлов и сетевых параметров позволяет восстановить работу клиента и исключить появление ORA-12560 в дальнейшем.
Проверка состояния службы Oracle Net Listener
Если служба неактивна, запустите её через команду lsnrctl start. На Windows-системах также можно проверить статус через Services.msc, убедившись, что OracleService
Рекомендуется периодически проверять логи слушателя, расположенные в папке $ORACLE_HOME/network/log. Файл listener.log фиксирует все попытки подключения и ошибки протокола. По ним можно определить, на каком этапе соединение блокируется, и скорректировать настройки порта или протокольного адаптера для устранения ORA-12560.
Настройка переменных окружения ORACLE_HOME и PATH
Ошибка ORA-12560 часто возникает при некорректной настройке переменных окружения ORACLE_HOME и PATH. ORACLE_HOME должен указывать на корневую папку установки Oracle, например, C:\app\oracle\product\19.0.0\dbhome_1 на Windows или /u01/app/oracle/product/19.0.0/dbhome_1 на Linux. Если путь указан неверно, клиент не может найти сетевые библиотеки.
Переменная PATH должна содержать путь к папке bin внутри ORACLE_HOME, например, %ORACLE_HOME%\bin на Windows или $ORACLE_HOME/bin на Linux. Это позволяет системе выполнять команды sqlplus и tnsping из любого каталога. После изменения переменных необходимо открыть новую консоль или выполнить source ~/.bash_profile на Linux, чтобы обновленные значения применились.
Проверить корректность настроек можно через команду echo %ORACLE_HOME% и echo %PATH% на Windows или echo $ORACLE_HOME и echo $PATH на Linux. Если значения совпадают с фактическим расположением Oracle, клиентская часть сможет корректно подключаться к серверу без возникновения ORA-12560.
Проверка доступности сети и порта сервера
Ошибка ORA-12560 может возникать, если клиент не может достичь сервера по сети или указанный порт заблокирован. Для проверки доступности используйте команду ping с IP-адресом или именем хоста сервера. Если отклик отсутствует, проверьте настройки маршрутизации и файервола.
Для проверки порта используйте telnet или утилиту nc, например, telnet 192.168.1.10 1521 на Windows или nc -zv 192.168.1.10 1521 на Linux. Порт 1521 – стандартный для Oracle Listener. Если соединение не устанавливается, необходимо открыть порт в сетевых фильтрах или проверить, что Listener работает на сервере и слушает правильный порт.
Также важно убедиться, что на сервере нет конфликтов с другими службами, использующими тот же порт. Используйте команду netstat -an | find «1521» на Windows или netstat -tuln | grep 1521 на Linux для проверки занятости порта. При обнаружении конфликтов перенастройте Listener или остановите лишние службы.
Исправление ошибок в файле tnsnames.ora
Ошибка ORA-12560 может быть вызвана некорректной записью в файле tnsnames.ora. Для исправления откройте файл, расположенный в $ORACLE_HOME/network/admin на Linux или %ORACLE_HOME%\network\admin на Windows, и проверьте параметры соединения.
Основные элементы записи:
| Параметр | Описание | Пример |
|---|---|---|
| SID | Имя базы данных на сервере | ORCL |
| HOST | IP-адрес или имя хоста сервера | 192.168.1.10 |
| PORT | Порт, на котором Listener принимает соединения | 1521 |
| PROTOCOL | Протокол соединения | TCP |
Важно, чтобы SID совпадал с именем базы на сервере, HOST был доступен по сети, а PORT соответствовал порту Listener. После изменений сохраните файл и выполните tnsping
Использование команды tnsping для диагностики соединения
Команда tnsping позволяет проверить доступность сервера Oracle и корректность конфигурации файла tnsnames.ora. Для диагностики выполните tnsping
Если tnsping возвращает ошибку, следует проверить несколько параметров: IP-адрес или имя хоста, порт Listener и протокол соединения. Также важно убедиться, что переменные ORACLE_HOME и PATH настроены корректно, иначе утилита не сможет найти сетевые библиотеки.
Для детальной диагностики можно использовать ключ -t, который показывает трассировку запроса до Listener. Анализ трассировки помогает определить, на каком этапе соединение блокируется и выявить проблемы с файерволом, маршрутизацией или некорректным Listener.
Перезапуск клиента и сервера Oracle после изменений

После внесения изменений в конфигурацию Oracle, включая файлы tnsnames.ora, listener.ora и переменные окружения, необходимо перезапустить клиент и сервер. На Windows это выполняется через Services.msc, остановкой и запуском служб OracleService
На Linux сервер перезапускается командами sqlplus / as sysdba с последующим shutdown immediate и startup. Listener перезапускается через lsnrctl stop и lsnrctl start. Перезапуск применяет обновленные настройки и освобождает занятые порты.
После перезапуска рекомендуется выполнить tnsping
Удаление конфликтующих версий Oracle и драйверов
Ошибка ORA-12560 может возникать из-за наличия нескольких версий Oracle или несовместимых драйверов на одном компьютере. Для устранения конфликтов выполните следующие действия:
- Проверьте установленные версии Oracle через Programs and Features на Windows или команду rpm -qa | grep oracle на Linux.
- Удалите старые или лишние версии баз данных и клиентов, оставив только актуальную. Используйте стандартный деинсталлятор или Oracle Universal Installer.
- Очистите системные переменные PATH и ORACLE_HOME от ссылок на удаленные версии.
- Удалите старые драйверы OCI и ODBC, проверив через odbcad32.exe на Windows или ldconfig -p | grep oracle на Linux.
- Перезагрузите систему после удаления, чтобы изменения применились к сетевым и библиотечным путям.
После удаления конфликтов проверьте соединение через tnsping и sqlplus. Если отклик положительный, ошибка ORA-12560 будет устранена.
Проверка прав пользователя и разрешений на сетевые ресурсы
Ошибка ORA-12560 может возникать при недостаточных правах пользователя для работы с Oracle и доступом к сетевым ресурсам. Для проверки выполните следующие действия:
- Убедитесь, что пользователь имеет права на чтение и запись в папках $ORACLE_HOME/network/admin или %ORACLE_HOME%\network\admin, где находятся файлы tnsnames.ora и listener.ora.
- Проверьте, что пользователь имеет права на выполнение файлов sqlplus, tnsping и других утилит Oracle.
- На Windows убедитесь, что служба Oracle запускается с учетной записью, обладающей необходимыми привилегиями для доступа к сетевым портам.
- На Linux проверьте права на сокеты Listener и сетевые устройства, а также принадлежность пользователя к группе dba.
- Проверьте настройки файервола и антивирусного ПО, разрешив порты Listener и доступ к хосту сервера.
После корректировки прав и разрешений выполните tnsping и подключение через sqlplus, чтобы убедиться, что ORA-12560 устранена и соединение с сервером стабильно.
Вопрос-ответ:
Что означает ошибка ORA-12560 и почему она возникает при подключении к Oracle?
Ошибка ORA-12560 указывает на сбой протокольного адаптера, что мешает клиенту установить соединение с сервером. Чаще всего это происходит из-за остановленной службы Oracle Net Listener, неправильных настроек переменных окружения, ошибки в файле tnsnames.ora или сетевых ограничений. Для диагностики используют команды tnsping и lsnrctl status, а также проверяют доступность сервера по IP и порту.
Как проверить, работает ли служба Oracle Net Listener?
На сервере с Oracle выполните команду lsnrctl status. В выводе должна появляться строка STATUS: READY с указанием прослушиваемого порта, обычно 1521. На Windows можно открыть Services.msc и убедиться, что службы OracleService
Почему важна корректная настройка переменных ORACLE_HOME и PATH для подключения к серверу?
Переменная ORACLE_HOME указывает на корневую папку установки Oracle, а PATH включает путь к папке bin внутри ORACLE_HOME. Если пути заданы неверно, клиентские утилиты не смогут найти сетевые библиотеки, что приводит к ошибке ORA-12560. После изменения переменных необходимо открыть новую консоль или выполнить source ~/.bash_profile на Linux, чтобы обновленные значения применились.
Как исправить ошибки в файле tnsnames.ora, вызывающие ORA-12560?
Файл tnsnames.ora должен содержать правильный SID, HOST, PORT и PROTOCOL. Например, SID должен совпадать с именем базы на сервере, HOST быть доступным по сети, а PORT соответствовать порту Listener. После изменения файла рекомендуется выполнить tnsping
