尝试使用 dblink 进行连接

trying to connect using dblink

提问人:Chezar 提问时间:11/5/2023 最后编辑:Chezar 更新时间:11/5/2023 访问量:41

问:

我可以使用dblink从服务器MDC连接到服务器DPS吗 所以我已经创建了从 MDC 到 JKT、JKT 到 DPS 以及 DPS 到 JKT 的 dblink

dblink 图像

我已经尝试了这种语法: 选择 * 从 (select * from [email protected];)@XE.JKT.ID.ORACLE.COM;

但我收到一个错误 ORA-00907:缺少右括号 00907. 00000 - “缺少右括号” *原因: *操作:
行错误:25 列:56

SQL 预言机 oracle11g

评论


答:

0赞 Littlefoot 11/5/2023 #1

这是同一个网络,不是吗?如果是这样,您可以创建从 DPS 到 MDC 的直接数据库链接。


如果 DPS 和 MDC 中涉及的数据库不“兼容”,则需要一个“桥接”(例如,数据库版本差异太大,无法建立直接连接)。像这样的东西(请注意,以下示例仅用于说明目的。也许我使用了错误的数据库版本,但这只是为了让您了解我在说什么):您在 MDC 上运行 Oracle 12c,在 DPS 上运行旧的 Oracle 8i;那么你需要运行 10g 的 JKT,并且能够与 8i 和 12c 通信。


至于你使用的语法:恐怕这是行不通的——你不能像那样“嵌入”查询。至于你得到的错误,它是关于分号的:

select * 
from (select * 
      from [email protected];   <-- this semi-colon
     )@XE.JKT.ID.ORACLE.COM;

如果确实需要介于两者之间的 JKT,请在该架构中创建一个视图(视图从位于 DPS 数据库中的表中选择数据):salary

-- this is on JKT database
create or replace view v_salary as
  select * from [email protected];

然后从 MDC 访问它:

-- this is on MDC database
select *
from [email protected]

评论

0赞 Chezar 11/5/2023
我在所有数据库 (11g) 上使用相同的版本,并且它们都在同一网络上。这是我的课程作业,所以我担心我可能无法在 MDC 和 DPS 之间创建 dblink,因为它与拓扑不匹配。