Не могу подключиться к БД на удаленном сервере
Подключаюсь по URL:
jdbc:oracle:thin:@host-ip:1521:service-name
Но соединение не устанавливается, при этом через SSH спокойно захожу в SQL*Plus. Предполагаю, что проблема в файле tnsnames.ora, его конфигурация:
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhom$
# Generated by Oracle configuration tools.
CS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = service-name)
)
)
LISTENER_CS =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
Я предполагал, что на месте HOST должен быть адрес, но введя его, ничего не поменялось, до сих пор ошибка:
java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
Ответы (1 шт):
предполагаю, что проблема в tnsnames.ora файле, его конфигурация
Нет, JDBC Thin driver не использует Oracle Net, и tnsnames.ora в том числе.
Прoсто нет удалённого доступа на сервер БД, например через VPN.
Но раз есть доступ по SSH, то простейшее решение, пробросить порт Listener с сервера БД на локальную машину. Простая тестовая программа:
import java.sql.*;
public class TestConn {
public static void main (String[] args) {
try {
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@"+args[0], "hr", "hr");
System.out.println ("Connection succeeded.");
} catch (Exception e) { e.printStackTrace(); }
}
}
Не сможет подключится на удалённый сервер БД:
$ java TestConn db.mycompany.net:1521/service_name
java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
Но через порт на локальной машине, вполне:
$ ssh -N -L1521:db.mycompany.net:1521 [email protected] &
$ java TestConn localhost:1521/service_name
Connection succeeded.