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

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

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

1 ответ1

1

Предположим, ваша база данных находится на узле с именем хоста "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. Сделал вики сообщество, так как другие могут внести свой вклад

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .