LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1459|回复: 4

FC4下JDBC连接ORACLE的问题!

[复制链接]
发表于 2005-12-1 09:36:30 | 显示全部楼层 |阅读模式
我现在在FC4 下通过jdbc连接ORACLE9I数据库(该机器上没有安装ORACLE客户端),总是连接不上,程序和数据库肯定都没有问题,在网上查了很多资料,最后猜测肯可能是我机器网络问题,可是我的机器上外网和局域网都没有问题,很正常,我比较了一下我的机器和其他Linux机器的路由信息,发现我的少一条, 其实我也不知道这个有没有影响,请大虾们帮这看看!
(jdbc 连接ORACLE 错误信息:

java.sql.SQLException: Io : The Network Adapter could not establish the connection
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)

)
 楼主| 发表于 2005-12-1 17:31:31 | 显示全部楼层

谢谢大家关注,问题解决.

经过反编译 Oracle 的驱动程序,跟踪调试,最后发现真正的的错误应该是 :
java.net.SocketException: Invalid argument or cannot assign requested address
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
        at java.net.Socket.connect(Socket.java:452)
        at java.net.Socket.connect(Socket.java:402)
        at java.net.Socket.<init>(Socket.java:309)
        at java.net.Socket.<init>(Socket.java:124)
        at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:48)
        at oracle.net.nt.ConnOption.connect(ConnOption.java:39)
        at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:44)
        at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:202)
        at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:140)
        at oracle.net.ns.NSProtocol.connect(NSProtocol.java:55)


  现在才知道是IP地址的问题,在FC4中默认的是IPv6 socket,JDK1.4支持的应该是IPv4,具体原因可以查看SUN公司给出的解释.
  解决办法是在运行JAVA程序时加上 -Djava.net.preferIPv4Stack=true 如:

java -Djava.net.preferIPv4Stack=true application.

详悉信息请查看下面的连接,如果那位朋友有更好的解决办法盼告知.

http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-1 19:58:07 | 显示全部楼层

发现禁用IPV6,是比较好的解决方法.

修改 /etc/modprobe.conf 文件,增加

alias net-pf-10 off
alias ipv6 off

这样就不用增加参数 "-Djava.net.preferIPv4Stack=true ",重起即可.
回复 支持 反对

使用道具 举报

发表于 2005-12-12 22:57:47 | 显示全部楼层
可以通过指明lsnrctl的配置文件里的ip地址解决否?
回复 支持 反对

使用道具 举报

发表于 2005-12-26 10:00:47 | 显示全部楼层
楼主,
能否简单介绍一下你用的反编译软件以及使用步骤  ?

希望也尝试反编译的说
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表