首批通过分布式安全可靠测评,为关键业务系统打造
使用 OB Oracle 到原生 Oracle 的 DBLink 查询报错 24454
更新时间:2026-07-07 13:01
问题现象
在 OceanBase Oracle 模式租户中,创建并使用 OCI 类型 DBLink 访问外部原生 Oracle 数据库时失败,报如下错误:
ErrorCode = 600, SQLState = HY000, Details = OBE-00600: internal error code, arguments: -5975, dblink remote error code: 24454, remote error msg: ORA-24454: client host name is not set
关键信息
| 诊断项 | 检查方法/预期结果 |
|---|---|
| 主机名配置 | 执行 hostname 命令,确保返回有效主机名。 |
| 主机名解析 | 执行 ping $(hostname),确保能解析到本机 IP。 |
| hosts 配置 | 检查 /etc/hosts 文件是否包含主机名与 IP 地址的映射关系。 |
问题原因
OCI 连接需要设置 OCI_ATTR_CLIENT_HOSTNAME 属性,但 OBServer 节点主机名未配置或不可解析,导致远端 Oracle 数据库拒绝连接。
问题的风险及影响
无法通过 DBLink 访问 Oracle 数据,影响数据同步、迁移等依赖跨库查询的业务场景。
适用版本
- OBServer V3.x (Oracle 模式)
- OBServer V4.x (Oracle 模式)
解决方法
在 所有 OBServer 节点 上执行以下操作:
查看当前主机名。
hostname确保主机名可解析。
ping $(hostname)检查
/etc/hosts配置。cat /etc/hosts若缺失主机名与 IP 的映射,以 root 权限添加配置。
echo "<本机IP地址> $(hostname)" >> /etc/hosts验证配置。
ping $(hostname) # 应能 ping 通
规避方式
在 OBServer 部署或扩容时,将 OCI 驱动安装和主机名配置加入标准化检查清单。