jdbc连接oracle数据库失败

时间:2022-12-17 17:28:01
各位大神,这个问题卡好久了,数据库一直连不上,不多说,直接上代码:
jdbc.properties文件:

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.1.106:1521:orcl
jdbc.username=root
jdbc.password=root
jdbc.maxActive=50

tnsnames.ora文件:

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.106)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.254.209.161)
    )
  )

listener.ora文件:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\install\Oracle\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:D:\install\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.106)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = D:\install\Oracle

报错信息:

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mappedStatementStrategy' defined in file [C:\Users\Max\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\iPlat4j3\WEB-INF\classes\spring\framework\applicationContext-ibatis.xml]: Invocation of init method failed; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io 异常: The Network Adapter could not establish the connection)
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io 异常: The Network Adapter could not establish the connection)
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io 异常: The Network Adapter could not establish the connection)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:855)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:112)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
    at org.springframework.jdbc.core.support.JdbcDaoSupport.getConnection(JdbcDaoSupport.java:119)
    at com.baosight.iplat4j.core.sqldao.impl.NamedSqlDaoSpringJdbcImpl.getDbConnection(NamedSqlDaoSpringJdbcImpl.java:364)
    at com.baosight.iplat4j.core.sqldao.impl.NamedSqlDaoDiagnoseImpl.getDbConnection(NamedSqlDaoDiagnoseImpl.java:81)
    at com.baosight.iplat4j.ep.MappedStatementStrategyWithPreLoadImpl.init(MappedStatementStrategyWithPreLoadImpl.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1160)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1085)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:429)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
    at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
    at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:877)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:851)
    ... 34 more

基本可以确定是数据库问题或者是配置文件问题,因为之前用过是好的,换了一个数据库就不行了,而且plsql可以正常连接数据库

14 个解决方案

#1


Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection

你自己本地PL/SQL能连上远程数据库吗?

#2


引用 1 楼 u011342403 的回复:
Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection

你自己本地PL/SQL能连上远程数据库吗?

这个没试过,有什么关系吗?要怎么做呢?

#3


引用 2 楼 Max_Rzdq 的回复:
Quote: 引用 1 楼 u011342403 的回复:

Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection

你自己本地PL/SQL能连上远程数据库吗?

这个没试过,有什么关系吗?要怎么做呢?

可能你本地的这个tns和liatener文件就错了。
然后你参考这个文件写出来的链接书库的方法自然也就是错的。

#4



Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
你用PL/SQL链接下数据库看下
tnsnames.ora重新配置你这个文件,楼主不会的话查找下相关学习下

#5


引用 4 楼 dietime1943 的回复:
Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
你用PL/SQL链接下数据库看下
tnsnames.ora重新配置你这个文件,楼主不会的话查找下相关学习下


说了我plsql可以连接啊

#6


强调一下,我的plsql是可以连接数据库的

#7


username?
password?
都是root?

#8


楼主、你是远程连接还是本地连接、jdbc.url=jdbc:oracle:thin:@192.168.1.106:1521:orcl、远程连的话、端口号1521和实例名orcl对吗、我记得服务器的端口号好像和本地不一样、

#9


telnet 192.168.1.106 1521 异常信息报你的网络不通。

#10


引用 7 楼 u014626975 的回复:
username?
password?
都是root?
是的,确定没有问题

#11


引用 8 楼 lLiuCl 的回复:
楼主、你是远程连接还是本地连接、jdbc.url=jdbc:oracle:thin:@192.168.1.106:1521:orcl、远程连的话、端口号1521和实例名orcl对吗、我记得服务器的端口号好像和本地不一样、

我是本地链接啊

#12


引用 9 楼 hanpoyangtitan 的回复:
telnet 192.168.1.106 1521 异常信息报你的网络不通。

我telnet可以ping通

#13


本地连接的话试一下127.0.0.1

#14


1、一般此类异常是连接的url配置有误,确认是否有误? 
   我的配置:jdbc:oracle:thin:@localhost:1521:orcl 

2、检查oracle监听服务是否启动(在windows服务或DOS下都可查看) 

3、确认监听终端IP及端口是否正确(DOS下查看) 
  C:\Documents and Settings\Administrator>cd \ 

C:\>lsnrctl 

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 06-11月-2010 10:3 
1:26 

Copyright (c) 1991, 2005, Oracle.  All rights reserved. 

欢迎来到LSNRCTL, 请键入"help"以获得信息。 

LSNRCTL> status 
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) 
LISTENER 的 STATUS 
------------------------ 
别名                      LISTENER 
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ 
ction 
启动日期                  06-11月-2010 10:10:18 
正常运行时间              0 天 0 小时 21 分 15 秒 
跟踪级别                  off 
安全性                    ON: Local OS Authentication 
SNMP                      OFF 
监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.o 
ra 
监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\listener.log 

监听端点概要... 
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc))) 
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.2)(PORT=1521))) 
服务摘要.. 
服务 "PL***tProc" 包含 1 个例程。 
  例程 "PL***tProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 
服务 "orcl" 包含 1 个例程。 
  例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 
服务 "orclXDB" 包含 1 个例程。 
  例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 
服务 "orcl_XPT" 包含 1 个例程。 
  例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 
命令执行成功 
   
  --- 一切正常,可仔细查看,却发现IP为:192.168.0.2,而jdbc连接url为localhost,一般windows操作系统都是将localhost域名解析为127.0.0.1,而本次安装的oracle监听的却是本机的IP? 为什么会如此? 我还没有细查。 
   不过问题已经找到,将url更改为:jdbc:oracle:thin:@192.168.0.2:1521:orcl 

  OK,测试,一切正常! 

#1


Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection

你自己本地PL/SQL能连上远程数据库吗?

#2


引用 1 楼 u011342403 的回复:
Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection

你自己本地PL/SQL能连上远程数据库吗?

这个没试过,有什么关系吗?要怎么做呢?

#3


引用 2 楼 Max_Rzdq 的回复:
Quote: 引用 1 楼 u011342403 的回复:

Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection

你自己本地PL/SQL能连上远程数据库吗?

这个没试过,有什么关系吗?要怎么做呢?

可能你本地的这个tns和liatener文件就错了。
然后你参考这个文件写出来的链接书库的方法自然也就是错的。

#4



Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
你用PL/SQL链接下数据库看下
tnsnames.ora重新配置你这个文件,楼主不会的话查找下相关学习下

#5


引用 4 楼 dietime1943 的回复:
Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
你用PL/SQL链接下数据库看下
tnsnames.ora重新配置你这个文件,楼主不会的话查找下相关学习下


说了我plsql可以连接啊

#6


强调一下,我的plsql是可以连接数据库的

#7


username?
password?
都是root?

#8


楼主、你是远程连接还是本地连接、jdbc.url=jdbc:oracle:thin:@192.168.1.106:1521:orcl、远程连的话、端口号1521和实例名orcl对吗、我记得服务器的端口号好像和本地不一样、

#9


telnet 192.168.1.106 1521 异常信息报你的网络不通。

#10


引用 7 楼 u014626975 的回复:
username?
password?
都是root?
是的,确定没有问题

#11


引用 8 楼 lLiuCl 的回复:
楼主、你是远程连接还是本地连接、jdbc.url=jdbc:oracle:thin:@192.168.1.106:1521:orcl、远程连的话、端口号1521和实例名orcl对吗、我记得服务器的端口号好像和本地不一样、

我是本地链接啊

#12


引用 9 楼 hanpoyangtitan 的回复:
telnet 192.168.1.106 1521 异常信息报你的网络不通。

我telnet可以ping通

#13


本地连接的话试一下127.0.0.1

#14


1、一般此类异常是连接的url配置有误,确认是否有误? 
   我的配置:jdbc:oracle:thin:@localhost:1521:orcl 

2、检查oracle监听服务是否启动(在windows服务或DOS下都可查看) 

3、确认监听终端IP及端口是否正确(DOS下查看) 
  C:\Documents and Settings\Administrator>cd \ 

C:\>lsnrctl 

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 06-11月-2010 10:3 
1:26 

Copyright (c) 1991, 2005, Oracle.  All rights reserved. 

欢迎来到LSNRCTL, 请键入"help"以获得信息。 

LSNRCTL> status 
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) 
LISTENER 的 STATUS 
------------------------ 
别名                      LISTENER 
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ 
ction 
启动日期                  06-11月-2010 10:10:18 
正常运行时间              0 天 0 小时 21 分 15 秒 
跟踪级别                  off 
安全性                    ON: Local OS Authentication 
SNMP                      OFF 
监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.o 
ra 
监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\listener.log 

监听端点概要... 
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc))) 
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.2)(PORT=1521))) 
服务摘要.. 
服务 "PL***tProc" 包含 1 个例程。 
  例程 "PL***tProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 
服务 "orcl" 包含 1 个例程。 
  例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 
服务 "orclXDB" 包含 1 个例程。 
  例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 
服务 "orcl_XPT" 包含 1 个例程。 
  例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 
命令执行成功 
   
  --- 一切正常,可仔细查看,却发现IP为:192.168.0.2,而jdbc连接url为localhost,一般windows操作系统都是将localhost域名解析为127.0.0.1,而本次安装的oracle监听的却是本机的IP? 为什么会如此? 我还没有细查。 
   不过问题已经找到,将url更改为:jdbc:oracle:thin:@192.168.0.2:1521:orcl 

  OK,测试,一切正常!