You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Weblogic 6.1无法解析Service_name格式Oracle连接串如何解决

问题背景
  • 基于Java 1.3开发的遗留Web应用部署于Unix服务器的Weblogic 6.1环境,通过连接池对接2个Oracle数据库
  • 受行业统一调整要求,数据库侧完成配置重构,原基于SID的连接方式需切换为Service_name方式
  • 当前环境存在硬约束:不支持升级Weblogic版本
问题现象

此前使用的SID格式JDBC连接串为:
jdbc:oracle:thin:@hostname.test.intranet:1521:sid

直接将SID位置替换为service_name值得到的测试连接串为:
jdbc:oracle:thin:@hostname.test.intranet:1521:service_name

使用该串在Weblogic控制台测试连接时抛出错误:

Status : Failure -Test failed: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

可行解决方案

报错核心原因是:jdbc:oracle:thin:@<host>:<port>:<值> 是Oracle JDBC thin驱动固定的SID连接语法,无论最后一段传什么内容,驱动都会按SID去解析连接请求,自然会被数据库监听器拒绝。Weblogic 6.1环境下可选择以下两种经过生产验证的方案对接:

  • 方案1:使用TNS描述符格式连接串(无需更换驱动,兼容性最优)
    Oracle thin驱动从8i版本开始就支持直接在连接串中写入完整TNS配置,不需要依赖服务器本地的tnsnames.ora文件,完全适配Weblogic 6.1自带的JDBC驱动版本,连接串格式如下:

    jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname.test.intranet)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=填写实际的service_name值)))
    

    配置时直接将整串填入连接池的JDBC URL字段即可,不需要调整其他驱动配置,测试通过后保存激活即可。

  • 方案2:更换驱动后使用简写Service_name连接串
    如果偏好短连接串格式,可以先将Weblogic连接池使用的Oracle JDBC驱动替换为10.2.0.x版本的ojdbc14.jar(该版本是最后一个兼容Java 1.3运行时的Oracle官方JDBC驱动),替换时需要移除Weblogic类路径下原有的老版本classes12.zip驱动包,避免类冲突,之后使用如下格式的连接串即可:
    jdbc:oracle:thin:@//hostname.test.intranet:1521/填写实际的service_name值

配置注意事项

  • 两个数据库的连接池需要分别填入对应主机地址、端口、service_name参数,禁止复用配置避免出现串库问题
  • 驱动替换完成后需要重启对应Weblogic节点才能生效,启动时需检查日志是否存在JDBC相关的类加载冲突报错
  • 所有配置调整先在控制台做单连接测试,测试通过后再保存激活,避免直接重启导致业务中断

内容的提问来源于stack exchange,提问作者Vishesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:57:19