Не могу подключиться к БД на удаленном сервере

Подключаюсь по 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 шт):

Автор решения: 0xdb

предполагаю, что проблема в 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.
→ Ссылка