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

Carbon创建Oracle数据源URL配置及ORA-28040认证错误排查求助

解决WSO2 EI连接Oracle 12c时的ORA-28040认证错误

这个ORA-28040错误我之前帮团队排查过好几次,核心问题是Oracle 12c的默认认证协议和你当前的JDBC驱动、数据库配置不兼容,咱们一步步来搞定:

1. 彻底清理并匹配JDBC驱动版本

Oracle 12c对应的JDBC驱动得用ojdbc7或ojdbc8,ojdbc6是给11g的,ojdbc14更是老旧版本,完全不兼容12c的新认证规则。你之前替换驱动时可能没清理旧的,导致WSO2还是加载了旧驱动:

  • 删掉D:\WSO2\EnterpriseIntegrator\6.5.0\lib目录下所有旧的Oracle驱动(ojdbc6、ojdbc14这些全部移除)
  • 下载对应Oracle 12c版本的ojdbc7/ojdbc8(比如Oracle 12.2.x就用ojdbc8),放到lib目录
  • 重启WSO2 EI服务器,确保新驱动被加载

2. 修改Oracle数据库的SQLNET.ORA配置

Oracle 12c默认启用了更严格的认证协议,旧驱动不支持,需要在数据库端调整配置:

  • 找到Oracle安装目录下的NETWORK\ADMIN\sqlnet.ora文件(比如路径是D:\app\你的用户名\product\12.2.0\dbhome_1\NETWORK\ADMIN)
  • 添加或修改以下参数:
    SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
    SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
    
  • 保存后,重启Oracle监听服务(在Windows服务里找OracleOraDB12Home1TNSListener)和数据库实例,让配置生效

3. 检查JDBC URL格式是否正确

你当前用的URL是jdbc:oracle:thin:@localhost:1522/ORADB12c,这里要区分是服务名还是SID:

  • 如果ORADB12c是SID,URL格式应该是jdbc:oracle:thin:@localhost:1522:ORADB12c(用冒号分隔端口和SID)
  • 如果是服务名,当前格式没问题,但可以用SQL语句确认服务名:
    SELECT value FROM v$parameter WHERE name='service_names';
    

4. 重置数据库用户的认证方式

有时候用户的认证哈希方式是SHA2,旧驱动无法识别,需要重置:

  • 登录Oracle数据库,执行以下SQL查询用户认证类型:
    SELECT username, authentication_type FROM dba_users WHERE username='WSO2_TUT';
    
  • 如果结果是PASSWORD_HASH或SHA2,执行以下语句重置用户密码(会自动切换到兼容旧驱动的认证方式):
    ALTER USER WSO2_TUT IDENTIFIED BY 你的密码;
    

按照这个顺序操作后,再去Carbon控制台测试数据源连接,应该就能解决问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:17:09