Ошибка ora 12170 tns connect timeout occurred

TROUBLESHOOTING STEPS (Doc ID 730066.1)

Connection Timeout errors ORA-3135 and ORA-3136
A connection timeout error can be issued when an attempt to connect to the database does not complete its connection and authentication phases within the time period allowed by the following:
SQLNET.INBOUND_CONNECT_TIMEOUT and/or INBOUND_CONNECT_TIMEOUT_ server-side parameters.

Starting with Oracle 10.2, the default for these parameters is 60 seconds where in previous releases it was 0, meaning no timeout.

On a timeout, the client program will receive the ORA-3135 (or possibly TNS-3135) error:

ORA-3135 connection lost contact

and the database will log the ORA-3136 error in its alert.log:

… Sat May 10 02:21:38 2008
WARNING: inbound connection timed out (ORA-3136) …

  • Authentication SQL

When a database session is in the authentication phase, it will issue a sequence of SQL statements. The authentication is not complete until all these are parsed, executed, fetched completely. Some of the SQL statements in this list e.g. on 10.2 are:

select value$ from props$ where name = 'GLOBAL_DB_NAME'

select privilege#,level from sysauth$ connect by grantee#=prior privilege# 
and privilege#>0 start with grantee#=:1 and privilege#>0

select SYS_CONTEXT('USERENV', 'SERVER_HOST'), SYS_CONTEXT('USERENV', 'DB_UNIQUE_NAME'),
SYS_CONTEXT('USERENV', 'INSTANCE_NAME'), SYS_CONTEXT('USERENV', 'SERVICE_NAME'), 
INSTANCE_NUMBER, STARTUP_TIME, SYS_CONTEXT('USERENV', 'DB_DOMAIN') 
from v$instance where INSTANCE_NAME=SYS_CONTEXT('USERENV', 'INSTANCE_NAME')

select privilege# from sysauth$ where (grantee#=:1 or grantee#=1) and privilege#>0

ALTER SESSION SET NLS_LANGUAGE= 'AMERICAN' NLS_TERRITORY= 'AMERICA' NLS_CURRENCY= '$'
NLS_ISO_CURRENCY= 'AMERICA' NLS_NUMERIC_CHARACTERS= '.,' NLS_CALENDAR= 'GREGORIAN'
NLS_DATE_FORMAT= 'DD-MON-RR' NLS_DATE_LANGUAGE= 'AMERICAN' NLS_SORT= 'BINARY' TIME_ZONE= '+02:00'
NLS_COMP= 'BINARY' NLS_DUAL_CURRENCY= '$' NLS_TIME_FORMAT= 'HH.MI.SSXFF AM' NLS_TIMESTAMP_FORMAT=
'DD-MON-RR HH.MI.SSXFF AM' NLS_TIME_TZ_FORMAT= 'HH.MI.SSXFF AM TZR' NLS_TIMESTAMP_TZ_FORMAT=
'DD-MON-RR HH.MI.SSXFF AM TZR'

NOTE: The list of SQL above is not complete and does not represent the ordering of the authentication SQL . Differences may also exist from release to release.

  • Hangs during Authentication

The above SQL statements need to be Parsed, Executed and Fetched as happens for all SQL inside an Oracle Database. It follows that any problem encountered during these phases which appears as a hang or severe slow performance may result in a timeout.

Symptoms of such hangs will be seen by the authenticating session as waits for:
• cursor: pin S wait on X
• latch: row cache objects
• row cache lock
Other types of wait events are possible; this list may not be complete.

The issue here is that the authenticating session is blocked waiting to get a shared resource which is held by another session inside the database. That blocker session is itself occupied in a long-running activity (or its own hang) which prevents it from releasing the shared resource needed by the authenticating session in a timely fashion. This results in the timeout being eventually reported to the authenticating session.

  • Troubleshooting of Authentication hangs

In such situations, we need to find out the blocker process holding the shared resource needed by the authenticating session in order to see what is happening to it.

Typical diagnostics used in such cases are the following:

  1. Three consecutive systemstate dumps at level 266 during the time that one or more authenticating sessions are blocked. It is likely that the blocking session will have caused timeouts to more than one connection attempt. Hence, systemstate dumps can be useful even when the time needed to generate them exceeds the period of a single timeout e.g. 60 sec:
      $ sqlplus -prelim '/ as sysdba' 

       oradebug setmypid 
       oradebug unlimit 
       oradebug dump systemstate 266 
       ...wait 90 seconds 
       oradebug dump systemstate 266 
       ...wait 90 seconds 
       oradebug dump systemstate 266 
       quit
  • ASH reports covering e.g. 10-15 minutes of a time period during which several timeout errors were seen.
  • If possible, Two consecutive queries on V$LATCHHOLDER view for the case where the shared resource being waited for is a latch.
    select * from v$latchholder;
    The systemstate dumps should help in identifying the blocker session.
    Level 266 will show us in what code it is executing which may help in locating any existing bug as the root cause.

Examples of issues which can result in Authentication hangs

  • Unpublished Bug 6879763 shared pool simulator bug fixed by patch
    for unpublished Bug 6966286 see Note 563149.1
  • Unpublished Bug 7039896 workaround parameter
    _enable_shared_pool_durations=false see Note 7039896.8

  • Other approaches to avoid the problem

In some cases, it may be possible to avoid problems with Authentication SQL by pinning such statements in the Shared Pool soon after the instance is started and they are freshly loaded. You can use the following artcile to advise on this:
Document 726780.1 How to Pin a Cursor in the Shared Pool using DBMS_SHARED_POOL.KEEP

Pinning will prevent them from being flushed out due to inactivity and aging and will therefore prevent them for needing to be reloaded in the future i.e. needing to be reparsed and becoming susceptible to Authentication hang issues.

At some points, the client sides received intermittent ORA-12170 repeatedly:

ORA-12170: TNS:Connect timeout occurred

Meanwhile, the server side did not receive any errors either in listener.log or alert.log.

ORA-12170 mean that the failed connections did not reach the listener due to network problem. Most likely, they’re blocked by security rules.

Sometimes, there’s a time-out, but what would cause the network time out? What factors that blocked the packets of clients in the pathway to database. Here I made a list for the possibilities of ORA-12170:

  • Server is Down
  • Sometimes, the network is unable to send your packets to the destination because the database server is down.

  • TNS Names
    • Wrong IP address in TNS entry, which cannot be reachable in your local area network. There maybe a duplicate entry in your tnsnames.ora.
    • Wrong port in TNS entry, which denies all connections by firewall.
  • Hardware or software firewall
  • Poor quality of network
  • Network card interface (NIC) failure
  • Anti-Virus software
    • Detected suspicious packets and blocked them.
    • Was scanning the whole operating system.
  • Intrusion Prevention System (IPS)
  • Intrusion Detection System (IDS)
  • Proxy Server

Solutions

The first step, you need to make sure everything you provided is correct like I said earlier, which includes checking tnsnames.ora.

The most common mistake is that you didn’t open the port 1521 on firewall. That caused ORA-12170. To open port on firewall of the database server, you may refer to these posts:

  • How to Open Port 1521 on Linux Server
  • How to Open Port 1521 on Windows Server

If the firewall is on network appliance, you should ask your network administrator for help.

In our case, we found an IPS applied new rules recently that could caused the problem eventually. To revert the configuration, we rolled back the policy of that IPS. No more ORA-12170.

Other Factors

By the way, if the network appliance really needs more considerable time to complete the validation, you can raise the inbound connect time value of the listener, which is also the solution to ORA-03136 Inbound Connection Timed Out.

Such cases of ORA-12170 happened on the client sides. The management usually misunderstood as a database problem, and ask DBA for resolving it. But the database was healthy during incidents, this reminds us that not all ORA errors are thrown by the database.

Ошибка ORA-12170: TNS: connect timeout occurred является одной из наиболее распространенных проблем, с которыми могут столкнуться разработчики и администраторы баз данных Oracle. Эта ошибка связана с превышением времени ожидания подключения к базе данных через протокол TNS (Transparent Network Substrate), который позволяет клиентам и серверам Oracle общаться между собой.

Когда возникает ошибка ORA-12170, это означает, что клиент не смог подключиться к серверу баз данных в течение указанного времени ожидания. Причины этой ошибки могут быть разными, такими как проблемы с сетью, неправильная конфигурация файлов TNS или перегрузка сервера баз данных.

Для решения этой проблемы можно предпринять несколько шагов. Во-первых, стоит проверить соединение с сервером баз данных и убедиться, что сетевые настройки правильные. Возможно, сервер баз данных недоступен или есть проблемы с настройками сети.

Во-вторых, можно попробовать увеличить время ожидания подключения к базе данных. Это можно сделать путем изменения параметров на стороне клиента или на стороне сервера. Если проблема возникает только иногда, это может помочь устранить ошибку.

Содержание

  1. Причины и способы устранения ошибки ORA-12170: TNS: connect timeout occurred
  2. Ошибка ORA-12170
  3. Причины возникновения ошибки ORA-12170: TNS: connect timeout occurred
  4. Проверка параметров подключения
  5. Настройка firewall и proxy
  6. Установка правильного DNS-сервера
  7. Проверка доступности сервера базы данных
  8. Обновление Oracle клиентского программного обеспечения
  9. Вопрос-ответ
  10. Что означает ошибка ORA-12170: TNS: connect timeout occurred?
  11. Как исправить ошибку ORA-12170: TNS: connect timeout occurred?
  12. Может ли быть ошибка ORA-12170: TNS: connect timeout occurred вызвана неправильным имени хоста или портом?
  13. Может ли быть причиной ошибки ORA-12170: TNS: connect timeout occurred неполадка с сервером базы данных?

Причины и способы устранения ошибки ORA-12170: TNS: connect timeout occurred

Ошибка ORA-12170: TNS: connect timeout occurred возникает в Oracle Database при попытке установить соединение с базой данных через протокол TNS (Transparent Network Substrate). Эта ошибка указывает на проблемы с сетевым соединением и может возникать по разным причинам.

Ниже представлены некоторые распространенные причины возникновения ошибки ORA-12170:

  • Проблемы с сетью: Одной из основных причин ошибки ORA-12170 являются проблемы с сетевым подключением. Это может быть вызвано неправильными настройками сетевого оборудования, отключением или недоступностью сервера базы данных или проблемами сетевого соединения между клиентом и сервером.
  • Сбои в DNS-сервере: Если используется имя хоста вместо IP-адреса при установлении соединения, то проблемы с DNS-сервером могут привести к возникновению ошибки ORA-12170.
  • Неправильные настройки параметров: Некорректные настройки параметров сетевого подключения или базы данных могут привести к появлению ошибки ORA-12170.

Для устранения ошибки ORA-12170 можно предпринять следующие шаги:

  1. Проверить сетевые подключения: Убедитесь, что сетевые подключения настроены правильно и сетевое оборудование работает без сбоев. Попробуйте подключиться к другой базе данных или серверу, чтобы исключить проблемы с текущим подключением.
  2. Проверить DNS-сервер: Если используется имя хоста, убедитесь, что DNS-сервер работает исправно и может корректно разрешать имя хоста в IP-адрес.
  3. Проверить файлы конфигурации: Проверьте настройки параметров сетевого подключения и базы данных в соответствующих файлах конфигурации (например, tnsnames.ora, sqlnet.ora). Убедитесь, что они указаны правильно и не содержат ошибок.
  4. Использовать другой метод подключения: Попробуйте использовать другой метод подключения к базе данных, например, измените протокол или используйте прямое подключение через IP-адрес.
  5. Обратиться к администратору базы данных: Если проблемы с подключением не удается решить самостоятельно, обратитесь к администратору базы данных или сетевому администратору для получения дополнительной помощи и диагностики проблемы.

Ошибки сетевого подключения могут быть сложными в диагностике и устранении. Однако, с помощью указанных выше способов можно существенно снизить вероятность возникновения ошибки ORA-12170 и обеспечить более стабильное сетевое подключение к базе данных Oracle.

Ошибка ORA-12170

Ошибка ORA-12170: TNS: connect timeout occurred — это ошибка, которая возникает при попытке подключения к базе данных Oracle через протокол TNS (Transparent Network Substrate). Ошибка указывает на то, что было превышено время ожидания при подключении к базе данных.

Существует несколько возможных причин возникновения ошибки ORA-12170:

  • Проблемы с сетевым подключением — возможно, присутствуют проблемы с сетью, которые мешают установить соединение с базой данных. Проверьте состояние сетевого подключения и убедитесь, что все настройки сети корректны.
  • Неправильные настройки TNS — ошибки в настройке файлов TNSNAMES.ORA или SQLNET.ORA могут привести к ошибке ORA-12170. Убедитесь, что эти файлы сконфигурированы правильно и содержат корректную информацию о базе данных.
  • Сервер базы данных недоступен — возможно, сервер базы данных отключен или недоступен из-за технических проблем. Попробуйте повторить попытку подключения позднее или свяжитесь с администратором сервера базы данных.

В случае возникновения ошибки ORA-12170 рекомендуется выполнить следующие действия:

  1. Проверьте подключение к сети — убедитесь, что ваше сетевое подключение работает исправно и нет проблем с интернетом.
  2. Проверьте файлы TNSNAMES.ORA и SQLNET.ORA — убедитесь, что эти файлы содержат правильную конфигурацию базы данных и находятся в нужном месте.
  3. Проверьте доступность сервера базы данных — убедитесь, что сервер базы данных доступен и работает корректно.
  4. Попробуйте повторить попытку подключения — возможно, ошибка была вызвана временными проблемами и повторная попытка может привести к успешному подключению.

Если проблема не устраняется, рекомендуется связаться с администратором базы данных или технической поддержкой Oracle для получения дополнительной помощи.

Причины возникновения ошибки ORA-12170: TNS: connect timeout occurred

Ошибка ORA-12170: TNS: connect timeout occurred возникает при попытке установить соединение с базой данных Oracle, но происходит истечение времени ожидания (timeout).

Существует несколько возможных причин, по которым может возникать данная ошибка:

  1. Проблемы с сетевым соединением. Ошибка может быть вызвана временным отключением сети или неправильно настроенными сетевыми параметрами. Необходимо проверить доступность базы данных и правильность конфигурации сетевых настроек.
  2. Проблемы с настройками TNS. TNS (Transparent Network Substrate) — это протокол, который позволяет клиенту подключаться к серверу базы данных. Неправильные настройки TNS или отсутствие конфигурационных файлов могут вызвать ошибку ORA-12170. Рекомендуется проверить наличие и корректность файлов tnsnames.ora и sqlnet.ora.
  3. Проблемы с конфигурацией фаервола. Если фаервол не настроен правильно, он может блокировать доступ к базе данных Oracle и вызывать ошибку ORA-12170. Необходимо проверить настройки фаервола и убедиться, что он разрешает соединения с базой данных.
  4. Проблемы с загрузкой сервера базы данных. Если сервер базы данных Oracle перегружен или имеет проблемы с ресурсами, это может привести к истечению времени ожидания при установлении соединения и вызывать ошибку ORA-12170.

При возникновении ошибки ORA-12170: TNS: connect timeout occurred необходимо внимательно проверить указанные выше причины и устранить возможные проблемы. Также рекомендуется обратиться к системному администратору или поддержке Oracle для получения дополнительной помощи и решения проблемы.

Проверка параметров подключения

Ошибка ORA-12170: TNS: connect timeout occurred возникает при неудачной попытке установить соединение с базой данных, и причиной может быть некорректная конфигурация параметров подключения. Чтобы решить эту проблему, необходимо проверить следующие параметры подключения:

  1. Хост (Host): убедитесь, что указали правильный IP-адрес или доменное имя базы данных, к которой вы пытаетесь подключиться. Проверьте также, доступен ли данный хост из вашей сети.
  2. Порт (Port): убедитесь, что указали правильный порт, через который осуществляется подключение к базе данных. Проверьте также, открыт ли данный порт на сервере базы данных и не блокируется ли он вашим брандмауэром.
  3. SID (System Identifier): убедитесь, что указали правильный идентификатор системы базы данных. SID может быть разным для различных экземпляров базы данных на одном сервере.
  4. SERVICE_NAME: убедитесь, что указали правильное имя сервиса базы данных. SERVICE_NAME может быть использован вместо SID для подключения к базе данных.
  5. Протокол (Protocol): убедитесь, что выбрали правильный протокол подключения к базе данных. Например, это может быть TCP/IP или Named Pipes.
  6. Таймаут (Timeout): проверьте, что указан разумный таймаут для подключения к базе данных. Если таймаут слишком маленький, подключение может не успеть установиться.

После проверки и правильной настройки всех указанных параметров подключения, ошибка ORA-12170 должна быть устранена и вы сможете успешно подключиться к базе данных.

Обратите внимание, что для применения изменений в параметрах подключения может потребоваться перезапуск клиента или выполнение специальных команд.

Настройка firewall и proxy

Для успешного подключения к базе данных Oracle и избежания ошибки ORA-12170: TNS: connect timeout occurred, необходимо правильно настроить firewall и proxy. В данной статье будут предложены некоторые рекомендации для этого.

Firewall

1. Убедитесь, что порты, используемые Oracle, открыты на firewall. Обычно, Oracle использует порт 1521 для протокола TCP, поэтому убедитесь, что он открыт.

2. Проверьте правила фильтрации потоков данных в firewall и убедитесь, что они не блокируют подключение к базе данных Oracle.

3. Если виртуальная частная сеть (VPN) используется для подключения к базе данных, убедитесь, что VPN соединение настроено правильно и подключение через него возможно.

4. Если имеются межсетевые экраны (DMZ) между клиентом и сервером базы данных Oracle, убедитесь, что они настроены правильно и позволяют установление подключения.

Proxy

1. Если в организации используется прокси-сервер, убедитесь, что он настроен для прозрачной передачи данных между клиентом и сервером Oracle. Проверьте настройки прокси и убедитесь, что они не блокируют подключение к базе данных.

2. Если у вас нет прямого доступа к Интернету, убедитесь, что прокси настроен для правильной передачи данных между клиентом и сервером Oracle. Узнайте у администратора сети о настройках прокси и примените их в вашем клиентском приложении Oracle.

3. Если прокси-сервер настроен для фильтрации и блокировки определенных типов трафика, убедитесь, что он не блокирует подключение к базе данных Oracle. Обратитесь к администратору прокси для получения разрешения на доступ к базе данных.

Используя описанные выше рекомендации, вы сможете настроить firewall и proxy для успешного подключения к базе данных Oracle и избежания ошибки ORA-12170: TNS: connect timeout occurred.

Установка правильного DNS-сервера

Ошибка ORA-12170: TNS: connect timeout occurred может возникнуть из-за неправильной настройки DNS-сервера. DNS (Domain Name System) — это система, которая преобразует доменные имена в IP-адреса компьютеров, с которыми вы пытаетесь установить соединение.

Если при попытке подключиться к базе данных в Oracle возникает ошибка ORA-12170, то одной из первых вещей, которую стоит проверить, является DNS-сервер. Чтобы установить правильный DNS-сервер, выполните следующие действия:

  1. Перейдите в настройки сети вашей операционной системы.
  2. Найдите секцию «Настройка DNS».
  3. Убедитесь, что у вас установлены правильные DNS-серверы, предоставленные вашим интернет-провайдером или администратором сети.
  4. Если DNS-серверы не указаны или настройки некорректные, введите правильные DNS-серверы.

После внесения правильных настроек DNS-сервера перезапустите вашу операционную систему и попробуйте снова подключиться к базе данных Oracle.

Если ошибка ORA-12170: TNS: connect timeout occurred осталась, рекомендуется обратиться к администратору базы данных или сети для получения дополнительной помощи. Они смогут провести более детальную диагностику проблемы и предложить решение.

Проверка доступности сервера базы данных

Ошибка ORA-12170: TNS: connect timeout occurred часто возникает при попытке подключения к серверу базы данных. Это может быть вызвано различными причинами, включая проблемы с сетью, неправильные настройки подключения или недоступность самого сервера базы данных.

Чтобы проверить доступность сервера базы данных, выполните следующие шаги:

  1. Убедитесь, что сервер базы данных работает. Проверьте его статус и убедитесь, что он запущен. Если сервер не запущен, попробуйте перезапустить его.
  2. Проверьте правильность настроек подключения. Убедитесь, что вы используете правильное имя хоста, порт и SID или сервисное имя базы данных.
  3. Проверьте наличие сетевых проблем. Убедитесь, что сеть работает исправно, и вы имеете доступ к серверу базы данных. Попробуйте выполнить ping на сервер базы данных, чтобы убедиться, что он доступен.
  4. Проверьте наличие доступа к серверу базы данных. Убедитесь, что у вас есть соответствующие права доступа и пароль для подключения к серверу базы данных.

Если после выполнения этих шагов проблема не решается, возможно, причина заключается в других настройках или проблемах на стороне сервера базы данных. В таком случае, рекомендуется обратиться к администратору базы данных или специалисту по базам данных для получения дальнейшей помощи.

Используя вышеуказанные шаги, вы можете проверить доступность сервера базы данных и идентифицировать возможные проблемы, которые могут вызывать ошибку ORA-12170: TNS: connect timeout occurred. Это поможет вам более эффективно устранить проблему и восстановить подключение к базе данных.

Обновление Oracle клиентского программного обеспечения

Ошибки возникающие при подключении к Oracle базе данных часто связаны с клиентским программным обеспечением. Если вы столкнулись с ошибкой ORA-12170: TNS: connect timeout occurred, обновление клиентского программного обеспечения может помочь решить проблему.

Для обновления Oracle клиентского программного обеспечения выполните следующие шаги:

  1. Скачайте последнюю версию Oracle клиентского программного обеспечения: Перейдите на официальный сайт Oracle и загрузите последнюю версию клиентского программного обеспечения для вашей операционной системы.
  2. Распакуйте загруженный архив: После загрузки архива, распакуйте его в удобное для вас место на компьютере.
  3. Запустите инсталляцию: Найдите файл установки в распакованной папке и запустите его. Следуйте инструкциям мастера установки, чтобы завершить процесс обновления Oracle клиентского программного обеспечения.
  4. Настройте параметры подключения: После завершения установки, откройте файл tnsnames.ora, который находится в корневой директории установленного клиентского программного обеспечения. Убедитесь, что параметры подключения указаны правильно.
  5. Перезапустите компьютер: После настройки параметров подключения рекомендуется перезапустить компьютер, чтобы изменения вступили в силу.

После выполнения этих шагов, попробуйте повторить подключение к Oracle базе данных. В большинстве случаев, обновление клиентского программного обеспечения помогает решить ошибку ORA-12170: TNS: connect timeout occurred.

Если после обновления Oracle клиентского программного обеспечения ошибка все еще возникает, рекомендуется обратиться к специалистам Oracle или к разработчикам вашей системы для дополнительной поддержки.

Вопрос-ответ

Что означает ошибка ORA-12170: TNS: connect timeout occurred?

Ошибка ORA-12170 означает, что при попытке подключения к базе данных Oracle, произошло превышение времени ожидания подключения. Возможные причины этой ошибки могут быть связаны с проблемами с сетью, неправильно настроенными параметрами подключения или недоступностью сервера базы данных.

Как исправить ошибку ORA-12170: TNS: connect timeout occurred?

Для исправления ошибки ORA-12170 можно выполнить несколько проверок и действий. Во-первых, стоит проверить состояние сети и убедиться, что сервер базы данных доступен по указанным в параметрах подключения адресу и порту. Во-вторых, необходимо проверить правильность настроек параметров подключения, таких как имя хоста, порт, SID или сервисное имя базы данных. В-третьих, можно попробовать увеличить значение параметра SQLNET.INBOUND_CONNECT_TIMEOUT в файле sqlnet.ora на стороне клиента. Если проблема не устраняется, следует обратиться к администратору базы данных для более детальной диагностики и возможного решения проблемы.

Может ли быть ошибка ORA-12170: TNS: connect timeout occurred вызвана неправильным имени хоста или портом?

Да, ошибка ORA-12170 может быть вызвана неправильным указанием имени хоста или порта при подключении к базе данных Oracle. Если эти параметры указаны неверно, то клиент не сможет найти сервер базы данных и произойдет превышение времени ожидания подключения. Поэтому перед исправлением ошибки стоит проверить правильность указания имени хоста и порта в параметрах подключения.

Может ли быть причиной ошибки ORA-12170: TNS: connect timeout occurred неполадка с сервером базы данных?

Да, неполадка с сервером базы данных может быть одной из причин возникновения ошибки ORA-12170. Если сервер не отвечает или недоступен из-за технических проблем, то клиент не сможет установить подключение и произойдет превышение времени ожидания подключения. В таком случае стоит проверить состояние сервера базы данных и убедиться в его доступности.

oracle tutorial webinars

Error ORA-12170: “TNS: Connect Timeout Occurred” 

There are several possible causes for error ORA-12170. They include: problems with the firewall, when the database is down, when the listener is down, if the sqlnet.ora parm is invalid, among other possible causes.

To fix the error, the user should consider all possible causes and their corresponding solutions on how to get rid of the error. The solution to error ORA-12170 will emerge through process of elimination.

Check to make sure there is no firewall in place between the client and server. If there is, disable the firewall and try again

If the error occurred because there was a delay in the system or network, turn on tracing to determine exactly where clients are timing out.

It may be the case that the Oracle service is running on an IP address while the host is configured to another IP address. To determine the IP address of the Oracle service, issue an lsnrctl status command. Check the address that is reported. To determine the IP address of the host, issue an ipconfig or ifconfig. This is dependent on your operation system; use ipconfig for Windows OS and ifconfig for Linux. To avoid seeing error ORA-12170, use a static IP address rather than a DHCP for assigning an IP address of the host.

In one case, the server may have shut down because the connection establishment or communication with a client did not complete in an allotted time interval. This is probably due to delays within the system or the network, or it may possibly be a client that is trying to maliciously attack by causing a Denial of Service attack on the server.

If the error is occurring because of a slow network or system, you may fix the error by reconfiguring the following parameters in sqlnet.ora to larger values:

SQLNET.INBOUND_CONNECT_TIMEOUT, SQLNET.SEND_TIMEOUT, SQLNET.RECV_TIMEOUT

If the error is occurring due to a malicious attack via a Denial of Service attack, you may use the sqlnet.log to identify the source of attack and restrict the attacker’s access. However, users should be aware that logged addresses might not be entirely reliable. To find your sqlnet.ora file, go to your $ORACLE_HOME/network/admin directory. If the timeout occurs before the IP address can be retrieved by the database server, enable listener tracing to determine the client who made the request.

If you continue to experience problems, contact your business objects administrator or database administrator with the error message information.

Пользователи не могут подключиться к базе. Обычно при этом они получают ошибки: ORA-12547: TNS:lost contact или ORA-12637: Packet receive failed.

В sqlnet.log на сервере сообщения об ошибке ORA-12170: TNS:Connect timeout. Еще для версий 10g и выше, в alert.log могут быть сообщения WARNING: inbound connection timed out (ORA-3136).


***********************************************************************
Fatal NI connect error 12170.

VERSION INFORMATION:
TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 10.2.0.4.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 10.2.0.4.0 - Production
Time: 13-FEB-2013 13:47:12
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: TNS:operation timed out
ns secondary err code: 12560
nt main err code: 505
TNS-00505: Operation timed out
nt secondary err code: 60
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=10.77.116.47)(PORT=2971))
***********************************************************************

Для разных ОС, параметр ‘nt secondary err code‘ может быть разным

For the Solaris system: nt secondary err code: 145:
ETIMEDOUT 145 /* Connection timed out */
For the Linux operating system: nt secondary err code: 110
ETIMEDOUT 110 Connection timed out
For the HP-UX system: nt secondary err code: 238:
ETIMEDOUT 238 /* Connection timed out */
For AIX: nt secondary err code: 78:
ETIMEDOUT 78 /* Connection timed out */
For Windows based platforms: nt secondary err code: 60 (which translates to Winsock Error: 10060)

Выдержка из документации

ORA-12170: TNS:Connect timeout occurred
Cause: The server shut down because connection establishment or communication with a client failed to complete within the allotted time interval. This may be a result of network or system delays; or this may indicate that a malicious client is trying to cause a Denial of Service attack on the server.
Action: If the error occurred because of a slow network or system, reconfigure one or all of the parameters SQLNET.INBOUND_CONNECT_TIMEOUT, SQLNET.SEND_TIMEOUT, SQLNET.RECV_TIMEOUT in sqlnet.ora to larger values. If a malicious client is suspected, use the address in sqlnet.log to identify the source and restrict access. Note that logged addresses may not be reliable as they can be forged (e.g. in TCP/IP).

———————————————————————————

Смысл этой ошибки в том что соединение не может быть установлено в течение отведенного интервала времени. А вот причин по которым это происходит может быть великое множество.

Как видно, основная рекомендация — увеличить параметры SQLNET.INBOUND_CONNECT_TIMEOUT, SQLNET.SEND_TIMEOUT и SQLNET.RECV_TIMEOUT. Можно попробовать сделать это, но это может не помочь. Поэтому лучше попробовать разобраться в корне проблемы.

Несколько основных причин ошибки и способы их решения

1) Серверные ресурсы перегружены.

Проверить насколько загружен сервер (процессор, диски, сеть). Выявить причину утечки ресурсов и устранить её. Большая загрузка сети может косвенно указывать на DoS. Если вы обнаружили высокую нагрузку сервера, но она оказалась полезной — то это указывает на нехватку мощности сервера и пора задуматься об его обновлении или замене.
©Bobrovsky Dmitry
2) Проблемы сети.
©Bobrovsky Dmitry
Если есть возможность проверить сетевой канал от клиента до сервера с помощью специализированых аппаратных или программных средств. Если нет, то можно запуститесь ping на некоторое время и посмотреть, какое время отклика и нет ли потерь пакетов.

ping server1 -t

3) База данных и Listener не функционируют.

Проверить что сама база данных и Listener запущены и работают нормально, что к ним можно подключиться локально или с других компьютеров сети.
Dmitry Bobrovsky
4) Проблемы из-за антивируса или firewall.
Dmitry Bobrovsky
Отключить или даже полностью деинсталировать антивирус или firewall.

5) Проблемы с DNS.

Либо прописать соответствующие записи в файл host либо во всех конфигурационных файлах oracle net использовать вместо имен — ip-адреса.
Запись fatal ni connect error 12170 ns main err code 12535 впервые появилась Dmitry Bobrovsky Blog

  • Ошибка oracle 03113
  • Ошибка ora 01019
  • Ошибка ora 01652 невозможно увеличить временный сегмент
  • Ошибка oracle 01652
  • Ошибка ora 06553 pls 306