ORA-12505错误求助:Weblogic无法连接Oracle数据库
错误详情
Message icon - Error Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:443)
已尝试公开社区中针对ORA-12505: TNS:listener does not currently know of SID given in connect descriptor (DBD ERROR: OCIServerAttach)的常规解决方案,问题仍未解决,无法从Weblogic建立到Oracle的连接。
深度排查步骤
核对Oracle实例SID准确性
登录Oracle服务器,执行sqlplus / as sysdba,运行select instance_name from v$instance;获取真实实例SID,严格对比Weblogic连接配置中的SID(Linux环境下SID区分大小写,Windows环境不区分)。确认监听服务的实例注册状态
在Oracle服务器执行lsnrctl status,查看Services Summary区域,确认目标SID已注册到监听。若未注册:- 执行
lsnrctl reload重新加载监听; - 检查实例监听参数:
show parameter local_listener;,若配置错误,执行alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle服务器IP)(PORT=1521))';,再执行alter system register;强制注册实例到监听。
- 执行
校验Weblogic JDBC连接配置
- 确认JDBC URL格式:使用SID连接时格式为
jdbc:oracle:thin:@<Oracle服务器IP>:1521:<SID>;使用服务名时为jdbc:oracle:thin:@//<Oracle服务器IP>:1521/<服务名>,避免SID与服务名混用; - 检查Weblogic数据源配置的“数据库名称”字段,确保填写的是对应连接方式的标识(SID或服务名);
- 在Weblogic服务器上执行
telnet <Oracle服务器IP> 1521或nc -zv <Oracle服务器IP> 1521,验证端口连通性。
- 确认JDBC URL格式:使用SID连接时格式为
检查Oracle实例运行状态
在Oracle服务器执行select status from v$instance;,确认实例状态为OPEN。若实例未启动,执行startup命令启动实例。排查TNS别名配置(若使用)
若Weblogic通过TNS别名连接,检查Weblogic服务器上的tnsnames.ora文件(路径通常为$ORACLE_HOME/network/admin或Weblogic指定路径),确认别名中的SID、主机、端口配置正确,执行tnsping <TNS别名>测试解析有效性。
内容的提问来源于stack exchange,提问作者ELSIDDIG IBRAHIM

