繁体   English   中英

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

[英]Connection to Oracle 11g from network machine fails via java

我在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,然后引脚成功。 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。

如果您在服务器上运行run netstat -n ,您应该找到一个看起来像的行

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

如果有什么东西真的在听那个端口。 如果找不到该行,请检查Oracle配置。

尝试连接其他一些工具,即sqlplus,以验证问题不在于Oracle。 如果您无法与sqlplus / sql developer连接,请确保您的oracle配置为允许远程连接,并且还侦听给定的地址/端口

public void makeOracleConnection() {
    try {
        Class.forName("oracle.jdbc.OracleDriver");
        Connection oraCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.217:1521:orcl", "hr", "hr");
        Statement oraStmt = oraCon.createStatement();
        //oraRsStmt=oraCon.createStatement(ResultSet.CONCUR_READ_ONLY,ResultSet.TYPE_SCROLL_INSENSITIVE);
        ResultSet rs = oraStmt.executeQuery("select hello as result from dual");

        while(rs.next()) {
             System.out.println(rs.getString("result"));
        } 
    } 
    catch (Exception e)
        System.out.println("Error while making connection with Database  : " + e.getMessage());
    }
}

试试吧。 希望它会有所帮助。 我也不喜欢你的连接路径。 这样对吗? 我认为它应该是这样的:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=YES)(ADDRESS=(PROTOCOL=tcp)(HOST=ip adres)(PORT=port)))(CONNECT_DATA=(SERVICE_NAME = orcl)))","username","password"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM