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

Oracle 12c中调用setClientInfo设置自定义clientInfo遇ORA-28267错误求助

解决Oracle 12c JDBC连接setClientInfo的ORA-28267错误

Oracle JDBC驱动并不支持任意命名空间,你遇到的ORA-28267: Invalid Namspace Value错误,就是因为使用了未被驱动认可的命名空间。

合法命名空间及可用键

Oracle 12c JDBC驱动仅认可以下几个命名空间:

  • OCI:对应OCI驱动专属的客户端信息配置
  • Oracle:Oracle通用客户端信息命名空间(最常用)
  • http://xmlns.oracle.com/jdbc:标准JDBC扩展命名空间

其中Oracle命名空间下支持的常用键包括:

  • Oracle.CLIENT_INFO:自定义字符串,最大长度64字节
  • Oracle.MODULE:模块名称,最大长度48字节
  • Oracle.ACTION:动作名称,最大长度32字节

正确代码示例

如果要设置自定义客户端用户ID,推荐使用Oracle.CLIENT_INFO:

connection.setClientInfo("Oracle.CLIENT_INFO", user);

也可以通过Oracle特定的Connection扩展类调用,效果一致:

((OracleConnection) connection).setClientInfo(OracleConnection.CLIENT_INFO, user);

验证设置是否生效

可以通过Oracle系统视图查询当前会话的客户端信息:

SELECT client_info, module, action 
FROM v$session 
WHERE sid = (SELECT sid FROM v$mystat WHERE rownum = 1);

关于“任意namespace.key”的误解

所谓“支持任意键值对”的说法,实际是针对标准JDBC的Application命名空间,但Oracle JDBC驱动对该命名空间的支持非常有限,无法真正实现自定义键值对。如果需要存储多个自定义信息,可以在CLIENT_INFO字段中用分隔符(比如|)拼接多个值,后续查询时再拆分解析即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:35:48