【发布时间】:2013-12-02 04:22:58
【问题描述】:
我有一段非常简单的 JAVA 代码,我尝试在其中从 JAVA 连接到我的 Oracle DB。
在 Windows 下一切正常,但是当我尝试在 Ubuntu 上运行它时,我遇到了错误。
我读了很多书,也尝试了很多解决方案。这是我的代码:
package utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class OracleJDBC {
private static String driver = "oracle.jdbc.driver.OracleDriver";
private static String password = "*****";
private static String dbname = "XE";
private static String username = "userir";
public Connection getConnection() {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
}
Connection connection = null;
try {
connection = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:" + dbname, username,
password);
} catch (SQLException e) {
System.out.println("Connection Failed");
e.printStackTrace();
return null;
}
return connection;
}
public void closeConnection(Connection connection) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
当我运行它时,我收到一个错误:
连接失败 java.sql.SQLRecoverableException: IO 错误: 网络适配器无法建立连接 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:458) 在 oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:546) 在 oracle.jdbc.driver.T4CConnection.(T4CConnection.java:236) 在 oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 在 oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521) 在 java.sql.DriverManager.getConnection(DriverManager.java:571) 在 java.sql.DriverManager.getConnection(DriverManager.java:215) 在 utils.OracleJDBC.getConnection(OracleJDBC.java:26) 在 utils.TestMain.main(TestMain.java:6) 原因: oracle.net.ns.NetException:网络适配器无法建立 连接在 oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:392) 在 oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:434) 在 oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:687) 在 oracle.net.ns.NSProtocol.connect(NSProtocol.java:247) 在 oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102) 在 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320) ... 8 更多原因:java.net.ConnectException:连接被拒绝 java.net.PlainSocketImpl.socketConnect(Native Method) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 在 java.net.Socket.connect(Socket.java:579) 在 oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:150) 在 oracle.net.nt.ConnOption.connect(ConnOption.java:133) 在 oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:370) ... 13 更多
我登录:sqlplus sys as sysdba
我启动了数据库:启动
我以 userir 身份登录 Oracle。 XE 存在。
我不知道,我做错了什么......
提前感谢您的提示!
【问题讨论】:
-
几件事:您的 ubuntu 机器是否托管 Oracle 实例?如果不是,您的连接字符串指向 localhost 并且需要更新。二:您提到您尝试了很多解决方案,您尝试了什么?
-
您好,感谢您的回答。我不明白你的解决方案。我应该如何更新这个字符串?我尝试更改用户,我检查了端口是否正常以及所有凭据。
-
Oracle 真的在 Linux 机器上运行吗?还是仅在您的 Windows 计算机上?
-
我在 Windows 上做了所有事情。之后,我在 Linux 上安装了 oracle 并启动了数据库。我在本地运行的所有内容。问题出在这个端口上。我在下面的 cmets 中写道,我收到了哪个错误
-
数据库是否监听同一个端口?