2016-05-18 9 views
3

У меня есть orace 11g работает на 192.168.1.217 и я пытаюсь подключить его с помощью драйвера JDBC с Java, и это дает мне следующее сообщение об ошибкеПодключение к Oracle 11g с сетевой машины не удается с помощью Java

IO Error: The Network Adapter could not establish the connection 

Библиотека Я используя это ojdbc6.jar

Вот мой код

public void makeOracleConnection() { 
     try { 
      Class.forName("oracle.jdbc.OracleDriver"); 
      oraCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.217:1521:orcl", "hr", "hr"); 
      oraStmt = oraCon.createStatement(); 
      oraRsStmt=oraCon.createStatement(ResultSet.CONCUR_READ_ONLY,ResultSet.TYPE_SCROLL_INSENSITIVE); 
     } catch (Exception e) { 
      System.out.println("Error while making connection with Database : " + e.getMessage()); 
     } 
    } 

Я также пытался свистеть на 192.168.1.217, то штырьки успешно. Также TNSLISTENER работает на этой машине. прошу помочь.

Вы можете найти печать трассировки стека здесь

run: 
java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection 

    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743) 
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:657) 
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:560) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at test.oracle.makeOracleConnection(oracle.java:30) 
    at test.oracle.<init>(oracle.java:21) 
    at test.oracle.main(oracle.java:69) 
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection 
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) 
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506) 
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595) 
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230) 
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452) 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496) 
    ... 8 more 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:163) 
    at oracle.net.nt.ConnOption.connect(ConnOption.java:159) 
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428) 
    ... 13 more 
BUILD SUCCESSFUL (total time: 1 second) 
+0

Нам нужна дополнительная информация об ошибке. Если отслеживается трассировка стека или что-то еще, вы должны опубликовать ее. Вы также должны убедиться, что что-то действительно прослушивает порт 1521 в 192.168.1.217 (например, запустите 'ss -l" sport =: 1521 "на Linux). –

+0

он на машине для окон. –

+0

Найти трассировку стека печати в отредактированном вопросе –

ответ

3

Вы получаете ошибку

java.net.ConnectException: Connection refused: connect 

Это означает, что нет ничего слушать на машине и порт, который вы пытаетесь подключиться. Ваш Java-код выглядит правильно, поэтому я продолжаю исследовать, что Oracle фактически прослушивает порт 1521 на 192.168.1.217.

Если запустить запустить netstat -n на сервере вы должны найти строку, которая выглядит как

TCP [::]:1521    [::]:0     LISTENING 

Если что-то действительно слушает этот порт. Если вы не найдете эту строку, проверьте конфигурацию Oracle.

+0

Это показывает то же самое, что LISTENING заменяется на TIME_WAIT –

0

Попробуйте подключиться к другому инструменту, то есть sqlplus, чтобы убедиться, что проблема не в Oracle. Если вы не можете связаться с Sqlplus разработчиком/SQL, убедитесь, что ваш оракул настроен для удаленных подключений, а также прослушивает данных адресов/портов

+0

sqlplus отлично работает. И файл tnsnames.ora имеет tcp-соединение на порту 1521 с sid orcl –

+0

hmm .. ok, так что, может быть, некоторые причудливые правила брандмауэра блокируют ваше соединение? – Nadir

+0

Я отключил брандмауэр –

0
public void makeOracleConnection() { 
    try { 
     Class.forName("oracle.jdbc.OracleDriver"); 
     Connection oraCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.217:1521:orcl", "hr", "hr"); 
     Statement oraStmt = oraCon.createStatement(); 
     //oraRsStmt=oraCon.createStatement(ResultSet.CONCUR_READ_ONLY,ResultSet.TYPE_SCROLL_INSENSITIVE); 
     ResultSet rs = oraStmt.executeQuery("select hello as result from dual"); 

     while(rs.next()) { 
      System.out.println(rs.getString("result")); 
     } 
    } 
    catch (Exception e) 
     System.out.println("Error while making connection with Database : " + e.getMessage()); 
    } 
} 

Попробуйте это. Надеюсь, это поможет. Мне также не нравится ваш путь подключения. Это правильно? Я думаю, что это должно быть примерно так:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=YES)(ADDRESS=(PROTOCOL=tcp)(HOST=ip adres)(PORT=port)))(CONNECT_DATA=(SERVICE_NAME = orcl)))","username","password" 
+0

Пожалуйста, дайте мне знать, если это поможет) –

 Смежные вопросы

  • Нет связанных вопросов^_^