浏览 2520 次
|
锁定老贴子 主题:Oracle 10g上的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2004-12-22
使用Tomcat、Hibernate,在Oracle 8i、Oracle 9i都没有问题,换到10g时,启动Tomcat报错,错误信息:
11:47:03,375 INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of process level read-write cache is not recommended) 11:47:03,867 WARN SettingsFactory:82 - Could not obtain connection metadata org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory, cause: java.sql.SQLException: Io òì3£: The Network Adapter could not establish the connection at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:274) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:319) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:344) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:148) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545) at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:82) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:300) at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:838) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:821) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:518) at net.sf.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:59) at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71) at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1091) at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:737) at com.lnw.boss.selfservice.system.ActionServlet.bindSessionFactory(ActionServlet.java:67) at com.lnw.boss.selfservice.system.ActionServlet.init(ActionServlet.java:44) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:887) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3960) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4283) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1125) at org.apache.catalina.core.StandardHost.start(StandardHost.java:832) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1125) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:518) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:2345) at org.apache.catalina.startup.Catalina.start(Catalina.java:598) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:297) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:398) 其中报错的:com.lnw.boss.selfservice.system.ActionServlet.bindSessionFactory(ActionServlet.java:67) 内容如下: SessionFactory sessionFactory = new Configuration().configure(contractXmlDoc(configFile)).buildSessionFactory(); 我已经更换了10g的JDBC驱动,这是怎么回事啊?客户端连接就没有问题。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-22
引用 java.sql.SQLException: Io òì3£: The Network Adapter could not establish the connection
是你的Oracle Database Listener配置有问题导致的。 |
|
| 返回顶楼 | |
|
最后更新时间:2004-12-22
请教,这个Listener应该如何配置?我安装的时候选择了典型设置。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-22
这是监听启动信息:
LSNRCTL for Linux: Version 10.1.0.2.0 - Production on 23-DEC-2004 00:13:59 Copyright (c) 1991, 2004, Oracle. All rights reserved. Starting /opt/oracle/product/10.1.0/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 10.1.0.2.0 - Production System parameter file is /opt/oracle/product/10.1.0/network/admin/listener.ora Log messages written to /opt/oracle/product/10.1.0/network/log/listener.log Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.1.0.2.0 - Production Start Date 23-DEC-2004 00:13:59 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /opt/oracle/product/10.1.0/network/admin/listener.ora Listener Log File /opt/oracle/product/10.1.0/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully |
|
| 返回顶楼 | |
|
最后更新时间:2004-12-22
你去仔细看一下你的Java程序连接失败的时候,你的数据库的 listener.log里面的记录。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-22
启动Tomcat时我都跟踪过listener.log,没有任何信息呀
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-22
那就说明你的Java程序根本就没有向数据库发起过连接请求。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-23
我监视了Oracle服务器TCP 1521端口,有如下数据:
15:21:30.674300 192.168.88.36.38238 > 192.168.88.35.1521: S 2303299868:2303299868(0) win 5840 <mss 1460,sackOK,timestamp 1062788495 0,nop,wscale 0> (DF) 4500 003c 4c93 4000 4006 bc90 c0a8 5824 c0a8 5823 955e 05f1 8949 911c 0000 0000 a002 16d0 2d01 0000 0204 05b4 0402 080a 3f58 dd8f 0000 0000 0103 0300 15:21:30.674340 192.168.88.35.1521 > 192.168.88.36.38238: R 0:0(0) ack 2303299869 win 0 (DF) 4500 0028 0018 4000 4006 0920 c0a8 5823 c0a8 5824 05f1 955e 0000 0000 8949 911d 5014 0000 c881 0000 这是listener回复的吗?但listener.log确实没有记录。也许真的是listener配置有问题,但我看不懂回复的数据包是什么意思。 |
|
| 返回顶楼 | |
|
最后更新时间:2004-12-23
搞定了,原来是Oracle 10g的监听使用机器名,而我的连接串用的是IP地址,改成机器名就OK,谢谢robbin!
|
|
| 返回顶楼 | |





