gpt4 book ai didi

java - 无法通过 JDBC 连接到虚拟机上的 Oracle 11g : Connection reset

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:24 25 4
gpt4 key购买 nike

我在笔记本电脑上安装了 Windows 7,笔记本电脑上装有 VMware Workstation 和 Oracle Linux 5.5。 Linux 上有 Oracle 11g r2 数据库,我需要使用 NAT 通过 JDBC 从主机 (Win7) 到访客系统 (Linux) 上的数据库建立连接。然后我在 Windows 上运行这个 java 代码:

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。这是我在 VMWare 中的虚拟网络编辑器设置和 Linux 上的网络配置的图片:

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

在 Linux 上我还有:

监听器.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)
)
)

所以我需要找出问题所在以及解决方法。请帮忙。

最佳答案

虽然晚了,但我找到了解决方案。

  1. 在 Oracle VM VirtualBox Manager 中,您必须转到全局工具,然后创建一个新适配器
  2. 它会自动提供一个 IPv4 地址,您可以使用该地址进行连接,但首先您必须更改虚拟机的设置,
  3. 选择您的 VM,例如 Windows 10,然后按“设置”,现在按“网络”,然后在“附加到”中选择“仅主机适配器”,在名称中选择您创建的适配器,然后按“确定”。<
  4. 运行您的虚拟机。
  5. 在 Java 中你可以这样使用:

    connection.setUrl("jdbc:oracle:thin:@IPv4Address:1521:xe");

    connection.setUser("示例");

    connection.setPassword("密码");

完成所有步骤后,您可以从主机连接到虚拟机中的数据库。

关于java - 无法通过 JDBC 连接到虚拟机上的 Oracle 11g : Connection reset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com