Невозможно подключиться к Oracle 11g на виртуальной машине через JDBC: сброс подключения

1

На моем ноутбуке установлена Windows 7, у которой есть VMware Workstation с Oracle Linux 5.5. В Linux есть база данных Oracle 11g r2, и мне нужно установить соединение через JDBC с хоста (Win7) в базу данных в гостевой системе (Linux) с использованием NAT. Итак, я запустил этот Java-код в Windows:

public static void main(String[] args) {
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    Connection con;
    try{
        con = DriverManager.getConnection("jdbc:oracle:thin:@172.68.0.1:1521:orcl", "system","oracle");
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

Я получаю это исключение:

java.sql.SQLRecoverableException: I/O Exception: Connection reset
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:428)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at OracleTest.main(OracleTest.java:15)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:196)
    at java.net.SocketInputStream.read(SocketInputStream.java:122)
    at oracle.net.ns.Packet.receive(Packet.java:283)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1054)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:308)
    ... 12 more

В Windows я назначил IPv4-адрес 172.68.0.1 сетевому адаптеру VMware VMnet8. Вот изображение с моими настройками для Virtual Network Editor в VMWare и сетевыми конфигурациями в Linux:

http://i.cubeupload.com/vAen5q.jpg

В Linux у меня также есть:

listener.ora:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.68.0.1)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

tnsnames.ora:

ORCL =    
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.68.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  ) 

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

Теги:
vmware
jdbc

1 ответ

0

Уже поздно, но я нашел решение для этого.

  1. В Oracle VM VirtualBox Manager вы должны перейти к Global Tools, а затем создать новый адаптер
  2. Он автоматически дает IPv4-адрес, с которым вы можете подключиться, но сначала вам нужно изменить настройки вашей виртуальной машины,
  3. Выберите свою виртуальную машину, например Windows 10, затем нажмите "Настройки", теперь "Сеть", затем в разделе "В приложении к" необходимо выбрать адаптер только для хоста, в имени выберите адаптер, который вы создали, и нажмите кнопку "ОК".
  4. Запустите вашу виртуальную машину.
  5. В Java вы можете использовать это:

    connection.setUrl( "JDBC: оракул: тонкий: @IPv4Address: 1521: х");

    connection.setUser( "пример");

    connection.setPassword( "проход");

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню