0

我已经在我的系统上安装了 Oracle 11g,并且能够使用简单的 java 程序连接到数据库。

ORACLE_USER = "user1"
ORACLE_PASSWORD = "user1"
ORACLE_HOST = "localhost"
ORACLE_SID = "ORCL"
ORACLE_PORT = "1521 "  

String connectionString = "jdbc:oracle:thin:@(description=(address=(host=" + ORACLE_HOST
                    + ")(protocol=tcp)(port=" + ORACLE_PORT + "))(connect_data=(sid=" + ORACLE_SID + ")))";
Connection connection = DriverManager.getConnection(connectionString, ORACLE_USER,ORACLE_PASSWORD);

现在,我想连接我的队友系统的数据库(局域网网络)。我可以ping通那个系统。我在上面的代码中所做的唯一改变是

ORACLE_HOST = "kdsystem" //machine name

但相同的代码失败并显示以下错误消息:

java.sql.SQLException: Io exception: The Network Adapter could not establish the
 connection
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:255)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
            at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:
    414)
......
....

请帮我解决这个问题。谢谢。

4

1 回答 1

0

在您的队友机器上,您可以使用 netstat 或其他工具检查它是否正在侦听 ORACLE_PORT 和 ORACLE_HOST(您的机器可见的 IP 地址,或 0.0.0.0)。你可以在 Linux/unix 机器上检查它:

netstat -an | grep 1521

grep或在不可用的 Windows 机器上:

netstat -an | findstr 1521

向我们展示此类命令的结果。

如果 Oracle 正在侦听 localhost (127.0.0.1),则其他机器无法与其连接。您必须配置 Oracle 服务器以供其他人使用。

如果 Oracle 正在侦听其他机器可用的地址,则检查您是否可以使用 telnet 连接到该机器。如果它无法与 Oracle 连接,那么这两台机器之间可能存在防火墙或类似的封锁。

于 2012-08-17T09:01:27.477 回答