用sqlplus连接oracle数据库时报错:

[root@ownsv ~]# sqlplus oracle/password@//10.5.0.7:1521/ssp

SQL*Plus: Release 11.1.0.7.0 - Production on Thu Jun 26 10:16:21 2014

Copyright (c) 1982, 2008, Oracle.  All rights reserved.

ERROR:

ORA-12528: TNS:listener: all appropriate instances are blocking new connections

Enter user-name:


使用oracle java客户端连接的时候也报错:

Caused by: oracle.net.ns.NetException: End of TNS data channel

        at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:165)

        at oracle.net.ns.NetInputStream.read(NetInputStream.java:117)

        at oracle.net.ns.NetInputStream.read(NetInputStream.java:92)

        at oracle.net.ns.NetInputStream.read(NetInputStream.java:77)

        at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1034)

        at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1010)

        at oracle.jdbc.driver.T4C8TTIdty.receive(T4C8TTIdty.java:516)

        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:332)

        ... 10 more


使用netstat -an | grep :1521查看的时候发现端口监听是正确的,当客户端来链接的时候状态为ESTABLISHED,但是瞬间又变成了TIME_WAIT状态。

客户端与oracle服务器ip也是可通的,ping无问题。

oracle服务器和客户端处于不同两个网络中,oracle同网络机器可以正常连接数据库。

最后发现居然是客户端和oracle server的MTU设置不一样导致的。修改成一致就可以了。

跨网络访问时须确保MTU一致,通讯才能正常。