#linux #oracle #oracle19c
Вопрос:
У меня есть две локальные виртуальные машины:
- Виртуальная машина № 1 с именем хоста LINUXVM, работающая в Linux 8 с базой данных Oracle 19c SE2.
- Виртуальная машина № 2 с именем хоста WINDOWSVM, работающая под управлением Windows 10 с установленным 32-разрядным мгновенным клиентом Oracle.
База данных запущена и работает, и я могу подключиться через sqlplus в виртуальной машине № 1 к своей базе данных с помощью
sqlplus sys/[PWD]@[INSTANCE] as sysdba
Однако, если я попытаюсь сделать то же самое с виртуальной машины № 2, я получу ORA-12170 (TNS:Произошел тайм-аут подключения).
Пинг имени хоста работает с обеих машин (я добавил IP-адрес БД в файлы обоих хостов). Виртуальной машине № 1 был присвоен статический IP-адрес (192.168.1.177)
Прослушиватель настроен следующим образом:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.177)(PORT = 1521))
)
)
tnsnames.ora настроен для обеих виртуальных машин следующим образом:
[INSTANCE] =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.177)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = [INSTANCE])
)
)
На брандмауэре виртуальной машины № 1 я разрешил входящий TCP-трафик на порт 1521:
ОБНОВЛЕНИЕ: Я применил Wireshark, и, похоже, виртуальная машина № 1 (IP .177) не может отправить обратно на виртуальную машину № 2 (IP .230). Как только я выключаю брандмауэр на виртуальной машине № 1, все работает нормально. Когда я включаю его, я получаю сообщение об ошибке, несмотря на то, что мой брандмауэр на виртуальной машине № 1 принимает весь входящий и исходящий трафик с/на IP .230
Ответ №1:
Вы можете попробовать изменить запись tnsnames.ora, как показано ниже, вместо использования SERVICE_NAME.
[ЭКЗЕМПЛЯР] = (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP)(ХОСТ = 192.168.1.177))(ПОРТ = 1521)) (CONNECT_DATA = (ВЫДЕЛЕННЫЙ СЕРВЕР) (SID = [ЭКЗЕМПЛЯР]) )
Кроме того, убедитесь, что клиент, установленный на виртуальной машине № 2, совместим с «Базой данных Oracle 19c SE2».
Комментарии:
1. Я попробовал, как вы предлагали, но это не сработало
2. Лучше всего избегать СВДС — они устарели десять или более лет назад. Используйте имена служб.
3. Хорошо, но это тоже не работает 🙂
4. @MrGrEEN — и почему именно вы думаете, что использование SID вместо ИМЕНИ СЛУЖБЫ приведет к тайм-ауту сетевого подключения?