ORA-02019:未找到远程数据库的连接说明。引用的数据库链接不存在

ORA-02019: connection description for remote database not found. The referenced database link did not exist

提问人:StanSmith 提问时间:11/17/2023 更新时间:11/18/2023 访问量:37

问:

我在oracle 19c中有查询:

Select
col_a,
col_b,
col_c,
col_d
FROM view_a
UNION ALL
Select
col_a,
col_b,
col_c,
col_d
FROM view_b

查看view_a和view_b有自己的逻辑,但view_a使用db_link - db_a,view_b使用db_link db_b。 每个选择单独工作正常,但是当我使用联合一起运行它时,我遇到了错误:

ORA-02019: connection description for remote database not found
ORA-02063: preceding line from DB
ORA-02063: preceding 2 lines from db_b

问题是这个数据库链接存在,单独选择也可以正常工作。 此外,第二个选择返回 0 行。 可能是什么问题?

甲骨文 Oracle19c

评论

0赞 Paul W 11/17/2023
这听起来就像是 Oracle 重写了它,并将工作发送到了它不应该有的远程。如果您包括显示相关链接的视图 SQL,以及单独解释每一半的执行计划,这将有所帮助。
0赞 StanSmith 11/17/2023
对不起,我无法提供这些观点的主体,但你需要相信我。有趣的事实是,即使我想检查解释计划,当我为联合选择时,我也会有关于此数据库链接的错误。另外解释一下,计划看起来非常简单。
0赞 Paul W 11/17/2023
我们无法帮助您处理未显示的代码。视图只是代码的标签,运行的是代码。
1赞 Darzen 11/17/2023
看起来像一些用户权限。view_a 和 view_b 是由同一个用户创建的吗?谁是数据库链接的所有者?谁在执行 UNION ALL 查询?您需要在此处添加更多上下文。

答:

1赞 Paul W 11/17/2023 #1

试试这个,看看是否能解决问题:

WITH a AS (SELECT /*+ no_merge materialize */ col_a,col_b,col_c,col_d FROM view_a),
     b AS (SELECT /*+ no_merge materialize */ col_a,col_b,col_c,col_d FROM view_b)
SELECT * FROM a
UNION ALL
SELECT * FROM b

这应该强制本地数据库驱动查询,并将两个远程部分分开。尽管如此,还是有一个潜在的问题,也许是错误,需要被发现,但这可能会有所帮助。