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

VPN环境下Oracle数据库连接报ORA-12899错误,求排查方案

排查Oracle连接报错ORA-12899: HOST字段值过长问题

错误信息

2023-03-21 13:44:15.150 DEBUG 15189 --- [  restartedMain] com.zaxxer.hikari.pool.PoolBase          : HikariPool-1 - Failed to create/setup connection: ORA-00604: error occurred at recursive SQL level 1
ORA-12899: value too large for column "AUD"."USER_LOG"."HOST" (actual: 31, maximum: 30)
ORA-06512: at line 2

问题根源

该错误是数据库审计表AUD.USER_LOG的HOST字段最大长度限制为30,但当前客户端连接时传递的主机标识(主机名或JDBC驱动生成的标识)长度达到31,超出了字段容量。

排查与解决步骤

1. 检查本地主机名长度

在macOS终端执行命令查看当前主机名:

hostname

如果输出字符数超过30,可直接修改短主机名(通过系统偏好设置->共享->修改计算机名称),或在JDBC连接中手动指定短标识。

2. 强制指定JDBC连接的主机标识

在Spring Boot的数据库连接URL中添加oracle.net.client_hostname参数,手动设置一个不超过30字符的主机名,示例:

# application.properties
spring.datasource.url=jdbc:oracle:thin:@//your-db-host:port/service-name?oracle.net.client_hostname=my-mac

该参数会强制Oracle JDBC驱动传递指定的短主机名,替代系统默认的长主机名。

3. 升级Oracle JDBC驱动版本

当前使用JDK 19,建议匹配使用适配JDK 11+的最新Oracle JDBC驱动(如ojdbc11),避免驱动与JDK版本适配问题导致主机名解析异常。在pom.xml中更新依赖:

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc11</artifactId>
    <version>21.13.0.0</version>
</dependency>

4. 联系DBA调整数据库字段长度(可选)

若无法修改客户端配置,可联系DBA调整审计表的HOST字段长度,执行SQL:

ALTER TABLE AUD.USER_LOG MODIFY HOST VARCHAR2(60);

此操作需要数据库修改权限,需确认业务允许后执行。

验证方法

使用sqlplus或其他客户端连接数据库,执行以下SQL查看当前会话的主机标识:

SELECT SYS_CONTEXT('USERENV','HOST') FROM DUAL;

检查返回值的字符数是否超过30,确认问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:05:17