SQLPLUS Невозможно подключиться в командной строке Windows - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь подключиться к экземпляру oracle на сервере Linux с моего ноутбука, используя SQLPLUS в командной строке.

У меня установлен Oracle SQLDeveloper, и я использую его для интерактивной работы, но пытаюсь запустить SQLPLUS, чтобы я мог настроить некоторые пакетные процессы.

В окне COMMAND я сначала устанавливаю переменную ORACLE_HOME, используя:

set ORACLE_HOME=C:\app\oracle\product\11.2.0\client_1

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

sqlplus -s 'myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)))'

Несмотря на то, что я указал PW, он отвечает запросом Введите пароль: и когда я ввожу его и нажимаю клавишу ввода, я получаю ERROR

ORA-12560: TNS: ошибка адаптера протокола

Итак, я установил переменную ORACLE_HOME, используя: (добавление \BIN)

set ORACLE_HOME=C:\app\oracle\product\11.2.0\client_1\BIN

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

-s 'myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xxx)))'

Это дает 2 ошибки, но не запрашивает пароль по крайней мере:

Ошибка 6 при инициализации SQL * Plus SP2-0667: файл сообщения sp1.msb не найден SP2-0750: Вам может потребоваться установить ORACLE_HOME для своего программного обеспечения Oracle каталог

Я пробовал различные значения для ORACLE_HOME, но либо он запросит PW, но все равно не понравится, либо не выдаст сообщение об ошибке с другими ошибками. Мне нужно, чтобы оно приняло значение PW, которое я предоставил, и подключилось, но не могу заставить его работать. Я также удостоверился, что у меня есть права на чтение и выполнение для этих каталогов и файла sp1us.msb в каталоге client_1\sqlplus\mesg.

Это моя первая попытка запустить SQLPLUS на моем ноутбуке. Я уже запускал его на сервере Linux, и в сценарии я установил в самом файле сценария оболочки:

export ORACLE_HOME=/oracle/app/product/11.2.0.4/dbhome_1/

и там работает.

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

1 Ответ

0 голосов
/ 09 мая 2018

Командная строка Windows обрабатывает одинарные кавычки по-другому для Linux. В Linux любой из них будет работать:

sqlplus -s 'myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)))'
sqlplus -s "myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)))"
sqlplus -s myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)))

, если в ваших реальных значениях не скрыты какие-либо специальные символы.

Но в Windows первая из них с одинарными кавычками включает эти кавычки в значение, передаваемое SQL * Plus. Это заставляет его видеть все это как имя пользователя.

Затем запрашивает пароль; но поскольку он также не видел строку подключения - поскольку он думает, что @... также является частью имени пользователя - он не может добраться до вашей БД, чтобы попытаться проверить его, поэтому ORA-12560.

Итак, удалите одинарные кавычки или переключитесь на двойные.

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