Oracle 11g DBCP 网络适配器无法建立连接

Posted

技术标签:

【中文标题】Oracle 11g DBCP 网络适配器无法建立连接【英文标题】:Oracle 11g DBCP The Network Adapter could not establish the connection 【发布时间】:2012-10-28 11:56:51 【问题描述】:

我擅长将 oracle 与 Spring 和 DBCP 连接起来。

    <bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
        <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@localhost:1521/ORCL" />
        <property name="username" value="PMSYSDB" />
        <property name="password" value="********" />
    </bean>

但我得到:Could not get JDBC Connection; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (IO Error: The Network Adapter could not establish the connection)

我可以通过具有以下属性的 SQLDeveloper 进行连接:

Hostname: localhost
Port    : 1521
SID     : ORCL
username: PMSYSDB
password:

所以我的数据库已启动并正在运行... 防火墙已关闭... 数据库和tomcat在同一台机器上...

认为这并不重要,但我将数据源与 Spring Security 一起使用:

     <authentication-manager>
         <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource"

           users-by-username-query="
              select username, password, enabled 
              from users where username=?" 

           authorities-by-username-query="
              select u.username, ur.authority from users u, user_roles ur 
              where u.user_id = ur.user_id and u.username =?  " 

        />
      </authentication-provider>
    </authentication-manager>

【问题讨论】:

【参考方案1】:

问题是我使用这个语法jdbc:oracle:thin:@localhost:1521/ORCL 作为连接字符串。在/ 之后,Oracle 需要服务名称而不是 SID(ORCL 是我的 SID)。 解决方案是将连接sring更改为jdbc:oracle:thin:@localhost:1521:ORCL

【讨论】:

【参考方案2】:

数据库可能设置为不允许此类连接。 试试这个:

telnet localhost 1521

查看您是否可以在该端口上连接。

【讨论】:

感谢您的回复。执行“telnet localhost 1521”后,我刷新了 cmd (C:\Users\myWinUser>),不知道这是否是连接计数。我还检查了“lsnrctl 状态”。它返回: Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1 )(PORT=1521))) ,女巫告诉侦听器侦听端口 1521,对吗? 在数据源属性中尝试使用 127.0.0.1 而不是 localhost【参考方案3】:

改变和操作后刷新监听器

C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\listener.ora

C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\tnsnames.ora

不要忘记在 CMD 中使用以下命令刷新监听器(以管理员身份运行)。

lsnrctl stop
lsnrctl start  

在此之后等待 1-2 分钟,然后点击测试。

【讨论】:

以上是关于Oracle 11g DBCP 网络适配器无法建立连接的主要内容,如果未能解决你的问题,请参考以下文章

网络适​​配器无法建立连接 - Oracle 11g

Oracle 11g 安装过程中“检查网络配置要求 未执行”解决方法

我在我的 oracle 数据库中收到错误“网络适配器无法建立连接”

java.sql.SQLRecoverableException:网络适配器无法建立连接

IOException:网络适配器无法建立连接[重复]

随机获取“IO错误:网络适配器无法建立连接”[重复]