Почему sqlplus не подключается?

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

[ ethan@gir ~ ]$ sqlplus xxx/yyy@zzz

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Apr 17 10:13:08 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Looooong подождите...

ERROR:
ORA-12170: TNS:Connect timeout occurred

Enter user-name: xxx
Enter password: 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

мой ...

zzz =
  (DESCRIPTION = 
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = dbhost)
        (PORT = 1521))
    )
  (CONNECT_DATA =
    (SERVICE_NAME = zzz)
  )
)

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


обновление

возможность пинговать DB хозяин машина без проблем.

попробовал...

sqlplus xxx/yyy@//dbhost/zzz

получил...

ERROR:
ORA-12170: TNS:Connect timeout occurred

попытался с помощью SID вместо SERVICE_NAME в tnsnames.Ора. Результат, похоже, не изменился. Вернулся обратно в SERVICE_NAME.


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

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

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 10:33:06
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0


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

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 11:24:08
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0

ЧАСТИЧНЫЙ ОТВЕТ

спасибо всем за ваши ответы. Они были полезны. Я обнаружил, что возникла проблема с DNS. Я смог пинговать hostname, поэтому подумал, что это должно работать нормально. Я также попробовал IP-адрес. Оказалось, что мне нужен внутренние "10.1.х.х" - адрес и. п. Для того, чтобы работать на этой ОС Х машины (но хоста в ОС Windows).

в этот момент я могу подключиться...

sqlplus xxx/yyy@//INTERNAL_IP/zzz

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

sqlplus xxx/yyy@zzz

...

ORA-12154: TNS:could not resolve the connect identifier specified

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

9 ответов


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

export TWO_TASK=//dbhost/zzz
sqlplus xxx/yyy

, или просто это:

sqlplus 'xxx/yyy@//dnhost/zzz'

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


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

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

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

IDENTIFIER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP) (HOST = userid.myhosteddb.net)(PORT = 1521))
    )
    (CONNECT_DATA = (SID = odb))
  )

читайте о Сиде здесь.


можно использовать

sqlplus user/password@servicename_host

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

sqlplus user/password@(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))

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

Эл.г

sqlplus user/password@'(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))'

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

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

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


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


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

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

$ tnsping $ORACLE_SID

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

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

$ oerr ora 12170
12170, 00000, "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).

соблюдать этой ССЫЛКА ДЛЯ ПОШАГОВОЙ УСТАНОВКИ И ПОСЛЕ УСТАНОВКИ МЕТОДОВ.. БУДЬТЕ ОСТОРОЖНЫ С НИМ.

и для подключения к sql plus:

  1. имя пользователя будет системой в соответствии с инструкцией, приведенной выше по ссылке
  2. ваш пароль должен быть не tiger, а тот, который вы установили в начале установки

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

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

soruces: я инженер по информатике в основном код на java


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

I. T. На моей работе установлен 32-битный и 64-битный Oracle, и на основе моей переменной PATH оболочка искала 64-битный путь для SQLPLUS.exe по сравнению с 32-разрядным путем.

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

Oracle\product\11.1.0\client_1_64bit\network\admin\TNSNAMES.Ора!--1-->

У меня была только строка соединения в 32-битных TNSNAMES.Ора: Oracle\product\11.1.0\client_1_32bit\network\admin\TNSNAMES.Ора!--1-->

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


у меня была аналогичная проблема, и кажется, что Oracle sqlplus был проблемой!

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

   > sqlplus MyUsername/MyPassword@MyHostname:1521/MyServiceName
   > sqlplus MyUsername/MyPassword@//MyHostname:1521/MyServiceName

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

    sqlplus @//MyHostname:1521/MyServiceName

    SQL*Plus: Release 11.2.0.4.0 Production on Thu Apr 2 15:59:49 2015

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.

    SP2-0310: unable to open file "//MyHostname:1521/MyServiceName.sql"
    Enter user-name: MyUsername
    Enter password: MyPassword
    ERROR: 
    ORA-12162: TNS:net service name is incorrectly specified

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

Глупый Оракул!!!