подключение к удаленному оракулу через cygwin sqlplus - PullRequest
1 голос
/ 18 ноября 2008

Я пытаюсь использовать cygwin sqlplus для подключения к удаленной установке Oracle, расположенной на myserver.mycompany.com порт 1530. Когда я пытаюсь

sqlplus username@myserver.mycompany.com:1530/orcl

Я получаю ошибку:

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

Когда я устанавливаю ORACLE_HOME в / cygdrive/c/oracle/product/10.2.0/client_1, я получаю другую ошибку:

Error 6 initializing SQL*Plus
Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

Я могу подключиться к порту 1530 сервера, и установленный локально разработчик SQL также может подключаться к базе данных. Что я делаю не так?

Ответы [ 6 ]

3 голосов
/ 18 ноября 2008

Нет клиента Oracle Cygwin. Как и в предыдущем ответе, используйте ORACLE_HOME, заданный путь к Windows.

Для первой половины вашего вопроса попробуйте посмотреть, на что установлена ​​переменная env TNS_NAMES, и, если она не установлена, вам, возможно, придется попробовать установить ее в правильном месте. Обычно по умолчанию используется% ORACLE_HOME% / network / admin / tnsnames.ora. SQL Developer хранит свою собственную копию файла tnsnames, поэтому вы не можете ответить на него, чтобы решить проблему.

3 голосов
/ 18 ноября 2008

Я не знал, что для Oracle был собственный клиент cygwin (поправьте меня, если я ошибаюсь, но я также не могу найти упоминания об этом на веб-сайте Oracle). Если вы используете Cygwin с клиентом Windows, вам нужно использовать собственный путь к Windows. Он не поймет ваш / cygdrive путь.

Однако я использовал клиенты Win32 Oracle с Cygwin и заставил его работать - те же сценарии оболочки будут работать на Cygwin, Linux и Solaris.

2 голосов
/ 27 апреля 2016

Объединение деталей из других ответов (что заняло у меня немного времени, поэтому я публикую его как отдельный ответ вместо комментариев):

$ORACLE_SID и, если установлено, $TNS_ADMIN (и, возможно, другие переменные Oracle ), связанные с путем, должны использовать пути Windows. Ваша переменная Cygwin $PATH должна, конечно, использовать нотацию Cygwin (/drives/c/…). Итак, я включил в свой .bashrc:

export ORACLE_HOME=c:\\Oracle\\product\\12.1.0\\dbhome_1
export TNS_ADMIN=d:\\Oracle\TNSAdmin
export PATH=$PATH:$(cygpath -u $ORACLE_HOME)/BIN

После этого у меня больше не было проблем с звонком, например, tnsping или sqlplus. Поскольку приведенное выше является лишь примером, вы, конечно, должны скорректировать пути в соответствии с вашей установкой / конфигурацией:)

0 голосов
/ 24 июня 2016

У меня такая же ошибка, как и у вас,

Вы должны установить не только ORACLE_HOME в переменных Windows,

Но также PATH включает %ORACLE_HOME%\bin

тогда вы можете открыть Windows CMD,

попробуй sqlplus username/password@your_define_tnsname

если все в порядке, затем удалите все настройки ORACLE PATH в cygwin, перезапустите cygwin, попробуйте.

в случае сбоя следует сначала разрешить sqlplus хорошо работать в windows cmd

0 голосов
/ 18 марта 2015

У меня получилось удалить /cygdrive/d или /cygdrive/c и заменить их на d:/ или c:/, и тогда ваш вызов sqlplus в сеансе cygwin будет работать. /cygdrive/DriveLetter сбивает с толку.

0 голосов
/ 18 ноября 2008

NXC прав - это был не клиент cygwin, который я использовал, а клиент windows sqlplus. Я установил переменные среды Windows для ORACLE_HOME и ORACLE_SID, а затем смог запустить sqlplus в оболочке cygwin bash, используя net_service_name из tnsnames.ora.

...