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 数据库中收到错误“网络适配器无法建立连接”