java - 通过 java 从网络机器连接到 Oracle 11g 失败

标签 java oracle jdbc oracle11g ojdbc

我在 192.168.1.217 上运行了 orace 11g,我正在尝试使用 JDBC 驱动程序和 java 连接它,它给了我以下错误

IO Error: The Network Adapter could not establish the connection

我使用的库是ojdbc6.jar

这是我的代码

public void makeOracleConnection() {
        try {
            Class.forName("oracle.jdbc.OracleDriver");
            oraCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.217:1521:orcl", "hr", "hr");
            oraStmt = oraCon.createStatement();
            oraRsStmt=oraCon.createStatement(ResultSet.CONCUR_READ_ONLY,ResultSet.TYPE_SCROLL_INSENSITIVE);
        } catch (Exception e) {
            System.out.println("Error while making connection with Database  : " + e.getMessage());
        }
    }

我也试过 ping 192.168.1.217 然后 pin 成功。 TNSLISTENER 也在该机器上运行。 请帮忙。

请在此处查找打印堆栈跟踪

run:
java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection

    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:657)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:560)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at test.oracle.makeOracleConnection(oracle.java:30)
    at test.oracle.<init>(oracle.java:21)
    at test.oracle.main(oracle.java:69)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496)
    ... 8 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:163)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:159)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428)
    ... 13 more
BUILD SUCCESSFUL (total time: 1 second)

最佳答案

你得到错误

java.net.ConnectException: Connection refused: connect

这意味着您尝试连接的机器和端口上没有任何监听。您的 Java 代码看起来是正确的,所以我会继续调查 Oracle 实际上正在监听 192.168.1.217 上的端口 1521。

如果你在服务器上运行 netstat -n 你应该找到一行看起来像

TCP    [::]:1521              [::]:0                 LISTENING

如果真的有东西在那个端口上监听。如果您没有找到该行,请检查您的 Oracle 配置。

关于java - 通过 java 从网络机器连接到 Oracle 11g 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290990/

相关文章:

java - 从旧版 Access 数据库导出时,希腊字符显示为问号或方框

java - sbt assembly fat JAR 的 Bigtable 错误(Jetty ALPN 和 OpenSSL 都不可用)

sql - 选择oracle整个表中的单个最大值或最小值

sql - 从 PARTITION BY 子句中删除 ORDER BY 子句?

java - 我正在寻找 db2 的数据提取工具

java - 在我的类路径中获取 tomcat-jdbc.jar 的推荐方法是什么?

java - 如何将 Java 类作为 CGI 脚本执行

java - 为什么 Set 接口(interface)上没有定义 replace() 方法?

java - 在对象列表中搜索值

java - 资源 DATASOURCE 在 LocalTransactionContainment 的清理中回滚