Не удается подключить SQL * Plus к Oracle 10g из VMWare Fusion VM

3291
Craig

Я пытаюсь подключиться к серверу Oracle 10g (удаленному хосту в локальной сети) из виртуальной машины Windows XP, размещенной в VMWare Fusion на OSX. Хотя я могу подключиться к службе с помощью Oracle Net Manager, я НЕ могу сделать это с помощью SQL Plus.

Что мне не хватает?

В настоящее время я использую режим NAT.

0

1 ответ на вопрос

1
Gary

Предположим, ваша база данных находится на узле с именем хоста "dbhost"

Во-первых, вы можете пропинговать dbhost? Если нет, то это сеть, а не Oracle.

Если вы можете, вы можете telnet к порту 1521 на этом хосте. Если нет, то это либо проблема стиля брандмауэра, либо на удаленном узле не работает прослушиватель Oracle (или это другой порт).

Предполагая, что он работает, вы хотите SID или SERVICE_NAME от администратора БД. Как правило, они одинаковы, и, если это система * nix, выполнение " ps -ef | grep smon" покажет вам SID запущенных экземпляров. Бесплатная база данных Express Edition обычно имеет SID XE

Если 1521 получает трафик, попробуйте

sqlplus user/pass@dbhost:1521/XE 

замена XE на любой ваш SID.

================================================== ========================== После комментария ниже. Я подозреваю где-нибудь брандмауэр.

На стороне сервера базы данных прослушиватель должен прослушивать порт 1521. В sqlnet есть настройки (я думаю, tcp_invited_nodes), которые могут выступать в качестве брандмауэра, сообщая слушателю только о том, что следует принимать соединения с IP-адресов из белого списка (или исключать соединения из черного списка). IP-адрес).

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

Если служба существует, прослушиватель будет пытаться передать соединение с базой данных, возвращая другой порт, через который соединение будет фактически взаимодействовать с базой данных (т. Е. Порт 1521 используется только во время начального соединения). [Существует исключение для соединений с общим сервером, но они редки.]

Потенциально база данных может находиться в режиме, в котором она не принимает подключения (режим ОГРАНИЧЕНИЯ или в процессе ЗАПУСКА или ВЫКЛЮЧЕНИЯ). База данных также выполняет аутентификацию (например, проверяя имя пользователя и пароль).

Я предполагаю, что либо слушатель отклоняет соединение на основании какого-либо параметра, либо (что более вероятно) он не может передать новое сетевое соединение через NAT. Попробуйте использовать OSX Instant Client с хоста и посмотрите, получится ли это. Мгновенный клиент в значительной степени разархивирован и работает, поэтому не требует большой установки и не требует прав администратора или чего-либо еще.

Если хост работает, а виртуальная машина не работает, попробуйте Bridged вместо NAT. Это означает, что гость виртуальной машины получает собственный IP-адрес и выглядит в сети как независимое устройство, а не прячется за хостом виртуальной машины, как в NAT.

PS. Сделал вики сообщество, так как другие могут внести свой вклад

я могу пинговать хозяина. я также могу подключиться к хосту через порт 23. Если я попытаюсь подключиться через 1521, я получу сообщение «соединение закрыто внешним хостом». «Официальный» файл tnsnames.ora (предоставленный мне одним из администраторов) использует порт 1521 для каждого SID. Я отключил брандмауэр на виртуальной машине и на своей рабочей станции. Craig 13 лет назад 0
Если вы получаете «Соединение закрыто внешним хостом», то я думаю, что Гэри нажал на него, когда предположил, что слушатель отклоняет соединение или не может вернуться через NAT. Телнет к 1521 должен просто сидеть и ждать. DCookie 13 лет назад 0

Похожие вопросы