如何从其他系统连接到Oracle数据库(How to connect to an Oracle DB

2019-10-17 03:24发布

我已经安装了系统上的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)
......
....

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

Answer 1:

在你的队友的机器,你可以用netstat或其他工具检查,如果它是在ORACLE_PORT和ORACLE_HOST(IP地址到你的机器,或0.0.0.0可见的)听。 你可以检查它的Linux / UNIX机器上:

netstat -an | grep 1521

或Windows机器上,其中grep不可用:

netstat -an | findstr 1521

让我们看看这样的命令的结果。

如果Oracle监听localhost(127.0.0.1),那么其他机器不能与它连接。 您必须配置Oracle服务器以处理提供给他人。

如果Oracle在提供给其他机器的地址听,然后检查是否可以使用telnet连接到该计算机上。 如果不能与Oracle连接则有可能是这两个机器之间的防火墙,或者类似的封锁。



文章来源: How to connect to an Oracle DB from another system