ORA-12170
1С:Предприятие и СУБД
Ошибка ORA-12170: TNS:Connect timeout occurred — траблшутинг сети
- Клиент долго ожидает ответа от сервера и падает с ошибкой
ORA-12170: TNS:Connect timeout occurred. - Команда
tnspingзависает и возвращаетTNS-12535: TNS:operation timed out. - Сетевые пакеты TCP SYN блокируются межсетевым экраном (Firewall / Security Group).
1. Проверка доступности порта 1521 через TCP/Telnet
# С клиента
nc -zvw3 db-server-ip 1521
# Или через PowerShell
Test-NetConnection -ComputerName db-server-ip -Port 15212. Проверка статуса локального фаервола на сервере БД
# RHEL / Rocky Linux
firewall-cmd --permanent --add-port=1521/tcp && firewall-cmd --reload
# Ubuntu (UFW)
ufw allow 1521/tcp3. Проверка прослушивания сокета процессом Listener
ss -tulpn | grep 15214. Тюнинг сетевых таймаутов в sqlnet.ora
Добавьте на клиенте и сервере в sqlnet.ora:
TCP.CONNECT_TIMEOUT = 10
SQLNET.INBOUND_CONNECT_TIMEOUT = 60
Практический опыт инженера:
Если сервер приложений 1С и Oracle разделены облачными сетями (AWS/Azure/VK Cloud), убедитесь, что в Security Groups открыт входящий трафик на порт 1521 для подсети кластера 1С.
Частые вопросы (FAQ)
В чем разница между ORA-12170 и ORA-12541 (No listener)?
ORA-12541 возникает, когда сервер доступен и быстро отвечает пакетом TCP RST (порт закрыт). ORA-12170 означает, что сервер вообще не отвечает (пакеты молча отбрасываются фаерволом Drop/Timeout).
Может ли перегрузка процессора сервера вызвать ORA-12170?
Да, если очередь входящих TCP-соединений (listen backlog) переполнена из-за 100% утилизации CPU, новые клиенты будут отваливаться по Connect Timeout.
Как увеличить размер очереди входящих соединений Listener?
В файле listener.ora укажите параметр QUEUESIZE: (ADDRESS=(PROTOCOL=TCP)(HOST=db-srv)(PORT=1521)(QUEUESIZE=100)).
Влияет ли MTU на появление спорадических ошибок ORA-12170?
Да, несоответствие MTU (Jumbo Frames) на пути между сервером приложений и СУБД приводит к потере фрагментированных пакетов и зависанию TCP-хендшейка.