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

使用dblink从MDC服务器连接DPS服务器的报错求助

解决ORA-00907: missing right parenthesis错误及跨dblink查询问题

错误直接原因

你的SQL语句存在两个语法问题:

  • 子查询(select * from salary@XE.DPS.ID.ORACLE.COM;)末尾多了分号,这是触发ORA-00907错误的直接原因,Oracle不允许子查询内部携带分号。
  • 你尝试的(...)@XE.JKT.ID.ORACLE.COM嵌套dblink写法是错误的,Oracle不支持这种跨两层dblink的嵌套引用方式。

正确的跨dblink查询方案

鉴于你已配置MDC→JKT、JKT→DPS的dblink,从MDC查询DPS的salary表有两种可行方式:

方案1:在中间节点创建视图(推荐)

在JKT服务器上创建指向DPS的salary表的视图:

CREATE VIEW v_dps_salary AS
SELECT * FROM salary@XE.DPS.ID.ORACLE.COM;

随后在MDC上通过JKT的dblink直接查询该视图:

SELECT * FROM v_dps_salary@XE.JKT.ID.ORACLE.COM;

方案2:使用链式dblink(Oracle 12c+支持)

如果你的Oracle版本是12c及以上,可直接在MDC使用链式dblink语法,无需嵌套:

SELECT * FROM salary@XE.DPS.ID.ORACLE.COM@XE.JKT.ID.ORACLE.COM;

语法逻辑是表名@目标dblink@中间dblink,即先通过JKT的dblink连接到JKT,再借助JKT上的DPS dblink访问目标表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:28:15