java.net.UnknownHostException: <<hostname>>: неизвестная ошибка - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь установить соединение с БД Oracle из приложения, которое работает на экземпляре AWS EC2. БД Oracle находится на локальном сервере. Брандмауэр открыт, и я могу подключиться к хостам SCAN и VIP этой БД из моего экземпляра EC2. Но все же я получаю следующее исключение:

Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:392) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:434) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:687) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:343) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
... 239 common frames omitted
Caused by: java.net.UnknownHostException: <<hostname>>: unknown error
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_40-internal]
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:907) ~[na:1.8.0_40-internal]
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1302) ~[na:1.8.0_40-internal]
at java.net.InetAddress.getAllByName0(InetAddress.java:1255) ~[na:1.8.0_40-internal]
at java.net.InetAddress.getAllByName(InetAddress.java:1171) ~[na:1.8.0_40-internal]
at java.net.InetAddress.getAllByName(InetAddress.java:1105) ~[na:1.8.0_40-internal]
at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:117) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
at oracle.net.nt.ConnOption.connect(ConnOption.java:133) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:370) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]

JDBC URL:

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = <<IP address of the host>>)(PORT = 1590)))(LOAD_BALANCE = yes)
(CONNECT_DATA =(SERVICE_NAME = <<example.service.com>>)(FAILOVER_MODE =(TYPE = SELECT)
(METHOD = BASIC))))`

1 Ответ

0 голосов
/ 18 января 2019

Вы используете Java 8? Если так, то, вероятно, это связано с этой ошибкой

Java 7 или 9, вероятно, даст вам более полезное сообщение об ошибке вместо «неизвестная ошибка» (например, возможно, «Имя или служба неизвестна»)

Кроме того, вы пробовали tnsping с хоста, с которого пытаетесь подключиться?

Также, как указано ниже в документации драйвера Oracle при использовании записи tnsnames в URL-адресе jdbc, это должно быть так, как показано ниже, при использовании драйвера OCI:

Обратите внимание, что вы также можете указать базу данных с помощью записи TNSNAMES. Доступные записи TNSNAMES можно найти в файле tnsnames.ora на клиентском компьютере, с которого вы подключаетесь. Например, если вы хотите подключиться к базе данных на хосте myhost от имени пользователя scott с паролем tiger, имеющим запись TNSNAMES в MyHostString, введите:

Connection conn = DriverManager.getConnection
  ("jdbc:oracle:oci8:@MyHostString","scott","tiger");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...