Fatal ni connect error 12170 oracle что это

Обновлено: 03.07.2024

Моя цель - подключиться к экземпляру Oracle 9i с моего компьютера с OS X. Я следовал инструкциям по установке здесь и прошел их без ошибок (в конце концов). Однако я обнаружил, что sqlplus не может подключиться:

Мой tnsnames.ora файл .

Может быть, есть переменная env, которую нужно установить?

Умеет пинговать БД Хост машины без проблем.

Попытался использовать SID вместо SERVICE_NAME в tnsnames.ora. Не похоже, чтобы изменить результат. Вернулся к SERVICE_NAME .

Последние пару записей в sqlnet.log .

Спасибо всем за ваши ответы. Они были полезны. Я обнаружил, что была проблема с DNS. Мне удалось пинговать по имени хоста, поэтому подумал, что должно работать нормально. Я также попробовал И.П. адрес. Оказалось, что мне нужен внутренний "10.1.x.x" И.П. адрес, чтобы он работал на этой машине OS X (но имя хоста в Windows нормально).

На данный момент, я могу связаться с .

Однако, с этими значениями, введенными в tnsnames.ora, это все еще не работает .

Я искал образец файла tnsnames.ora, который был близок к тому, что мне было нужно, и скопировал содержимое в мой файл. Изменились параметры и теперь все работает. Не уверен, почему мой не работал.

Поскольку вы используете клиент 10g , рекомендуется использовать синтаксис Easy Connect :

Также проверьте, Oracle_HOME указывает на нужную папку: tnsnames.ora ищется в $Oracle_HOME/network/admin/tnsnames.ora

Ваши скобки кажутся правильными.

Попробуйте использовать SID:

Ниже приведен пример файла tnsnames.ora:

Ты можешь использовать

если вы не можете подключиться, вы можете использовать

если вы используете linux другую * Nix OS, вам нужно использовать кавычки, иначе () интерпретируется Shell

Вы пытались использовать telnet, чтобы получить доступ к открытому порту, чтобы убедиться, что брандмауэр не блокирует вас? может стоит попробовать telnet port-num Host

Вы настроили свою среду с помощью скрипта oraenv ?

Вы пробовали tnsping ?

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

Вы можете получить немного больше информации о том, что ошибка с командой oerr :

Вероятно, в вашем рабочем каталоге создается файл sqlnet.log. Это может помочь вам, или если вы разместите его содержание, это может дать нам больше информации.

В вашем примере вы пробуете две разные вещи. В командной строке вы использовали "xxx/yyy @ zzz". Похоже, что это успешно находит запись "zzz" в tnsnames.ora, но тайм-аут указывает, что он не получает никакого ответа от сервера. Вы можете успешно пропинговать dbhost?

Со второй попытки вы только что ввели "xxx" для имени пользователя; это имеет смысл, если вы не привыкли к SQLPlus, но, как вы можете видеть, нет смысла запрашивать имя базы данных. Таким образом, в этом случае он пытался подключиться к "xxx/yyy" без имени службы, что привело ко второй ошибке. Это просто означает, что у вас не установлено имя службы по умолчанию. Так что эта ошибка происходит из-за неполного ввода. (Вы должны ввести "xxx @ zzz" в качестве имени пользователя, чтобы указать имя службы в этом запросе. Вы можете ввести всю строку подключения "xxx/yyy @ zzz" в запросе имени пользователя, если вы не против виден.)

У меня была похожая проблема, и похоже, что проблема была в Oracle sqlplus!

Подключение как любая из этих работ:

(// необязательно перед именем хоста). Тем не менее, отключив пароль или оба пользователя/пароль не удается, как это:

У меня была та же ошибка (ORA-12162: TNS: сетевое имя службы указано неверно), но другая причина (в Windows 7 Enterprise 64-bit). Надеюсь, это поможет кому-то:

ЭТО. на моей работе был установлен 32-битный и 64-битный Oracle, и, основываясь на моей переменной PATH, оболочка искала SQLPLUS.exe в 64-битном пути по сравнению с 32-битным.

Различные пути используют разные файлы TNSNAMES.ora, и у меня не было строки подключения в 64-битном пути:

У меня была только строка подключения в 32-битном TNSNAMES.ora: Oracle\product\11.1.0\client_1_32bit\network\admin\TNSNAMES.ora

Кроме того, поскольку было несколько установок Oracle, мне пришлось удалить переменную среды Oracle_HOME, чтобы обе установки могли использовать разные домашние каталоги.

СЛЕДУЙТЕ _ ССЫЛКА НА ШАГ ЗА УСТАНОВКУ И POST МЕТОДЫ УСТАНОВКИ. БУДЬТЕ ОСТОРОЖНЫ С ЭТОМ.

И связать с sql plus:

  1. ИМЯ ПОЛЬЗОВАТЕЛЯ БУДЕТ БЫТЬ СИСТЕМОЙ В СООТВЕТСТВИИ С ИНСТРУКЦИЕЙ, ВЫДЕЛЕННОЙ В НАШЕЙ ССЫЛКЕ
  2. ваш пароль НЕ ДОЛЖЕН БЫТЬ тигровым, а тот, который вы установили в начале установки

P.S: не паникуйте, если вы обнаружите проблему (несовместимость браузера) с подключением Oracle Enterprise Manager во время тестирования установки, если ваш браузер - Google Chrome. нажмите стрелку на задней странице и стрелку на следующей странице, чтобы согласовать условия, и нажмите кнопку ОК.

Я решил эту проблему на своей машине за один день . но это будет вопрос нескольких часов для вас.

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

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))
***********************************************************************

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).

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

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

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

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

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

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

Я пытался подключиться к базе данных здесь, на моем ноутбуке, используя Oracle Toad, но у меня продолжалась эта ошибка:

ORA-12170: TNS: истекло время ожидания подключения

Каковы возможные причины, по которым у меня продолжалась эта ошибка?

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

[Собираем ответы в комментариях]

Проблема в том, что служба Oracle работает на IP-адресе, а хост настроен с другим IP-адресом.

Чтобы увидеть IP-адрес службы Oracle, введите команду lsnrctl status и проверьте указанный адрес (в данном случае это 127.0.0.1, локальный хост):

Чтобы увидеть IP-адрес хоста, введите команду ipconfig (в Windows) или ifconfig (в Linux).

Однако в моей установке служба Oracle не работает , если она настроена на адрес localhost, я должен установить реальный IP-адрес хоста (например, 192.168.10.X ).

Чтобы избежать этой проблемы в будущем, не используйте DHCP для назначения IP-адреса хоста, а используйте статический.

Я попытался изменить файл tnsnames.ora, указав IP-адрес сервера вместо адреса localhost или loopback, это не сработало. Брандмауэр блокировал запросы. Настройте брандмауэр или выключите его (не рекомендуется), все будет работать.

Помимо oci.dll есть несколько файлов .jar. Это натолкнуло меня на мысль установить Java. Потом все заработало.

ПОРЯДОК УСТРАНЕНИЯ НЕИСПРАВНОСТЕЙ (Doc ID 730066.1)

Ошибки тайм-аута подключения ORA-3135 и ORA-3136 Ошибка тайм-аута соединения может быть выдана, когда попытка соединения с базой данных не завершает фазы соединения и аутентификации в течение периода времени, разрешенного следующими условиями: SQLNET.INBOUND_CONNECT_TIMEOUT и / или INBOUND_CONNECT_TIMEOUT_ параметры на стороне сервера.

Начиная с Oracle 10.2, значение по умолчанию для этих параметров составляет 60 секунд, тогда как в предыдущих выпусках он был равен 0, что означает отсутствие тайм-аута.

ORA-3135 соединение потеряно связь

И база данных зарегистрирует ошибку ORA-3136 в своем alert.log:

. Сб, 10 мая 02:21:38 2008 ПРЕДУПРЕЖДЕНИЕ: время ожидания входящего соединения истекло (ORA-3136) .

Когда сеанс базы данных находится на этапе аутентификации, он выдает последовательность операторов SQL. Аутентификация не завершена, пока все это не будет проанализировано, выполнено и получено полностью. Некоторые из операторов SQL в этом списке, например на 10.2:

ПРИМЕЧАНИЕ. Приведенный выше список SQL не является полным и не отражает порядок аутентификационного SQL. Также могут существовать различия от выпуска к выпуску.

  • Зависание во время аутентификации

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

Симптомы таких зависаний будут рассматриваться сеансом аутентификации как ожидание: • курсора: вывод S, ожидание на X • защелка: объекты кэша строк • блокировка кэша строк Возможны другие типы событий ожидания; этот список может быть неполным.

Проблема здесь в том, что сеанс аутентификации заблокирован в ожидании получения общего ресурса, который удерживается другим сеансом внутри базы данных. Этот сеанс блокировки сам занят длительным действием (или собственным зависанием), что не позволяет ему своевременно освободить общий ресурс, необходимый для сеанса аутентификации. Это приводит к тому, что тайм-аут в конечном итоге передается сеансу аутентификации.

  • Устранение неполадок аутентификации зависает

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

Типичные методы диагностики, используемые в таких случаях, следующие:

  1. Три последовательных дампа состояния системы на уровне 266 за время, когда один или несколько сеансов аутентификации заблокированы. Вероятно, что блокирующий сеанс вызовет таймауты для нескольких попыток подключения. Следовательно, дампы состояния системы могут быть полезны, даже если время, необходимое для их создания, превышает период одного тайм-аута, например. 60 секунд:
  • Отчеты ASH, охватывающие, например, 10-15 минут периода времени, в течение которого было замечено несколько ошибок тайм-аута.
  • Если возможно, два последовательных запроса в представлении V $ LATCHHOLDER для случая, когда ожидаемый общий ресурс является защелкой. выберите * из v $ latchholder; Дампы состояния системы должны помочь в идентификации сеанса блокировщика. Уровень 266 покажет нам, в каком коде он выполняется, что может помочь найти любую существующую ошибку как основную причину.

Примеры проблем, которые могут привести к зависанию аутентификации

    Неопубликованная ошибка 6879763 Ошибка симулятора общего пула, исправленная патчем для неопубликованной ошибки 6966286, см. Примечание 563149.1

Неопубликованный параметр обхода ошибки 7039896 _enable_shared_pool_durations = false см. примечание 7039896.8

Другие способы избежать проблемы

В некоторых случаях можно избежать проблем с аутентификацией SQL, закрепив такие операторы в общем пуле вскоре после запуска экземпляра и их новой загрузки. Вы можете использовать следующую статью, чтобы дать совет по этому поводу: Документ 726780.1 Как закрепить курсор в общем пуле с помощью DBMS_SHARED_POOL.KEEP

Закрепление предотвратит их удаление из-за бездействия и устаревания и, следовательно, предотвратит их необходимость в перезагрузке в будущем, то есть необходимость в повторной обработке и их уязвимость для проблем с зависанием аутентификации.

Я получал ту же ошибку при подключении моего "hr" пользователя ORCLPDB, который является подключаемой базой данных.

Сначала получите имя хоста и номер порта, набрав команду lsnrctl status в командной строке Windows. В моем случае это было 127.0.0.1 с номером порта 1521

Во-вторых, введите следующую команду с вашим именем хоста и номером порта:

Я пытался подключиться к базе данных здесь, в моем ноутбуке, используя Oracle Toad, но я продолжал иметь эту ошибку:

каковы возможные причины, я продолжал иметь эту ошибку?

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

проблема в том, что Служба Oracle работает по IP-адресу, а хост настроен с другим IP-адресом.

чтобы увидеть IP-адрес Службы Oracle, введите lsnrctl status команда и проверка указанного адреса (в данном случае это 127.0.0.1, localhost):

чтобы увидеть IP-адрес хоста, введите ipconfig (под windows) или ifconfig (под linux) команда.

Howewer, в моей установке, служба Oracle не работает если установлен на localhost адрес, я должен установить реальный IP-адрес хоста (например 192.168.10.X).

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

это из-за конфликтующего SID. Например, в Oracle12cBase\app\product\12.1.0\dbhome_1\NETWORK\ADMIN\tnsnames.описание файла-ora, соединение для ORCL это:

и вы пытаетесь подключиться с помощью строки подключения, используя тот же SID, но другой IP, имя пользователя/пароль, например:

чтобы решить эту проблему, внесите изменения в файл tnsnames.Ора файл:

Проверьте брандмауэр, чтобы разрешить подключение на сервере от вашего клиента. Разрешив доменную сеть или создав правило.

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

я получал ту же ошибку при подключении моего пользователя "hr" ORCLPDB, который является подключаемой базой данных.

во-первых, получить имя хоста и номер порта, введите команду lsnrctl status в командной строке Windows. В моем случае, это был 127.0.0.1 и номер порта, как 1521

во-вторых, введите команду ниже с именем хоста и номером порта:

ШАГИ ПО УСТРАНЕНИЮ НЕПОЛАДОК (Doc ID 730066.1)

ошибки тайм-аута соединения ORA-3135 и ORA-3136 Ошибка тайм-аута соединения может быть выдана, если попытка подключения к базе данных не завершает фазы подключения и проверки подлинности в течение периода времени, разрешенного следующими параметрами: заменить sqlnet.INBOUND_CONNECT_TIMEOUT и/или INBOUND_CONNECT_TIMEOUT_ серверные параметры.

начиная с Oracle 10.2, по умолчанию для этих параметров 60 секунд, где в предыдущих выпусках это было 0, что означает отсутствие тайм-аута.

в тайм-аут клиентская программа получит ошибку ORA-3135 (или, возможно, TNS-3135):

ORA-3135 соединение потерял контакт

и база данных зарегистрирует ошибку ORA-3136 в своем предупреждении.log:

. Сб 10 Мая 02: 21: 38 2008 Предупреждение: время ожидания входящего соединения (ORA-3136) .

когда сеанс базы данных находится на этапе проверки подлинности, он выдаст последовательность операторов SQL. Аутентификация не завершена, пока все они не будут проанализированы, выполнены, извлечены полностью. Некоторые из операторов SQL в этом списке, например, на 10.2:

Примечание: список SQL выше не является полным и не представляет собой порядок проверки подлинности SQL . Могут также существовать различия от выпуска к выпуску.

  • зависает во время проверки подлинности

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

симптомы таких зависаний будут видны сеансом аутентификации как ожидания для: * курсор: pin s ждать на X * защелка: объекты кэша строк * блокировка кэша строк Возможны другие типы событий ожидания; этот список может быть неполным.

проблема здесь в том, что сеанс аутентификации заблокирован, ожидая получения общего ресурса, который удерживается другим сеансом внутри базы данных. Этот сеанс блокатора сам занят длительным действием (или его собственным зависанием), которое не позволяет ему освободить общий ресурс, необходимый сеансу аутентификации в своевременная мода. В результате время ожидания в итоге сообщили аутентификации сессии.

  • Устранение неполадок аутентификации зависает

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

типичные диагностики используемые в таких случаях следующие:

  1. три раза подряд systemstate сбрасывает на уровне 266 во время блокировки одного или нескольких сеансов проверки подлинности. Вполне вероятно, что сеанс блокировки приведет к тайм-аутам более чем одной попытки подключения. Следовательно, дампы systemstate могут быть полезны, даже если время, необходимое для их создания, превышает период одного таймаута, например 60 сек:
  • отчеты ASH, охватывающие, например, 10-15 минут периода времени, в течение которого несколько ошибок тайм-аута были замечены.
  • если возможно, два последовательных запроса на V$LATCHHOLDER view для случая, когда ожидаемый общий ресурс является защелкой. выбрать * из V$latchholder; Дампы systemstate должны помочь в идентификации сеанса блокатора. Уровень 266 покажет нам, в каком коде он выполняется, что может помочь в поиске любой существующей ошибки в качестве основной причины.

примеры проблем, которые могут привести к зависанию аутентификации

    неопубликованные Ошибка 6879763 shared pool simulator ошибка исправлена патчем для неопубликованной ошибки 6966286 см. Примечание 563149.1

неопубликованная ошибка 7039896 обходной параметр _enable_shared_pool_durations=false см. Примечание 7039896.8

другие подходы, чтобы избежать проблем

в некоторых случаях можно избежать проблем с аутентификацией SQL, закрепив такие операторы в общем пуле вскоре после экземпляра запускается и они свежеиспеченные. Вы можете использовать следующие статья для: Документ 726780.1 как закрепить Курсор в общем пуле с помощью DBMS_SHARED_POOL.KEEP

закрепление предотвратит их вымывание из-за бездействия и старения и, следовательно, предотвратит их необходимость перезагрузки в будущем, т. е. необходимость повторного ремонта и подверженности проблемам с аутентификацией.

Читайте также: