Oracle访问多个数据库

Oracle访问多个数据库,oracle,Oracle,我使用的是Oracle SQL Developer版本4.02.15.21 我需要编写一个访问多个数据库的查询。我所要做的就是得到一个TableX中所有id的列表,每个数据库中都有一个Table1的实例,但是每个数据库中有不同的值,并将所有结果合并到一个大列表中 我的问题是访问4个以上的数据库-我得到这个错误:ORA-02020:使用的数据库链接太多。我无法更改INIT.ORA文件的打开链接最大限制 因此,我尝试动态打开/关闭这些链接: SELECT Local.PUID FROM TableX

我使用的是Oracle SQL Developer版本4.02.15.21

我需要编写一个访问多个数据库的查询。我所要做的就是得到一个TableX中所有id的列表,每个数据库中都有一个Table1的实例,但是每个数据库中有不同的值,并将所有结果合并到一个大列表中

我的问题是访问4个以上的数据库-我得到这个错误:ORA-02020:使用的数据库链接太多。我无法更改INIT.ORA文件的打开链接最大限制

因此,我尝试动态打开/关闭这些链接:

SELECT Local.PUID FROM TableX Local
UNION ALL
----
SELECT Xdb1.PUID FROM TableX@db1 Xdb1;
ALTER SESSION CLOSE DATABASE LINK db1
UNION ALL
----
SELECT Xdb2.PUID FROM TableX@db2 Xdb2;
ALTER SESSION CLOSE DATABASE LINK db2
UNION ALL
----
SELECT Xdb3.PUID FROM TableX@db3 Xdb3;
ALTER SESSION CLOSE DATABASE LINK db3
UNION ALL
----
SELECT Xdb4.PUID FROM TableX@db4 Xdb4;
ALTER SESSION CLOSE DATABASE LINK db4
UNION ALL
----
SELECT Xdb5.PUID FROM TableX@db5 Xdb5;
ALTER SESSION CLOSE DATABASE LINK db5
但是,这会在最后关闭的数据库上生成“ORA-02081:数据库链接未打开”

有人能建议对上述内容进行替代或调整吗

如果可能,请使用语法正确的SQL提供您的建议的小样本。

如果您无法更改“打开链接”设置,则无法使用单个查询从所有要查询的数据库中进行选择

如果您需要通过数据库链接查询大量数据库,那么更改open_links设置似乎非常合理。如果有一组人告诉您需要从大量表中执行X查询数据,而另一组人告诉您无法执行X,那么让这两组人讨论并找出哪一组人获胜几乎总是有意义的

如果我们不需要编写一个查询就可以解决这个问题,那么您可以选择。例如,您可以编写一点PL/SQL,依次从每个表中选择数据并对其进行处理。根据所涉及的数据库链接的数量,编写一个循环,为每个数据库链接生成一个动态SQL语句,执行SQL,然后关闭数据库链接可能是有意义的


如果您想让用户能够运行一个返回所有数据的查询,可以编写一个流水线表函数,用动态SQL实现这种循环,然后让用户查询流水线表函数。这实际上不是一个从所有表中获取数据的查询。但是,在不修改开放链接限制的情况下,它与您可能得到的最接近。

默认值为4,因此将union限制为4。。查看您是否遇到了默认和。这不能是您正在运行的SQL,因为无法在SELECT语句中嵌入ALTER会话不太习惯,但我尝试了搜索引擎-**搜索::ORA-0202:使用的数据库链接太多**,结果看起来不错。试试看。不太习惯Oracle不确定这对你的情况来说有多可行。您可以为每个select语句创建一个临时表,在TESTERABLE中添加一个insert。然后从tetrable.user3801932中选择*您的用户名评论不会通知您正在回复的人(&Username)。只有@Username会。每个评论只能包含其中一个。而且请有礼貌地评论@Srinath只是想帮忙谢谢你的回答!我肯定认为有一种方法可以轻松地打开/关闭链接。不幸的是,我不能改变开放链接的限制,但我会研究你的建议+1帮助你确定没有办法只关闭链接吗?这似乎是合乎逻辑的解决方案…@user3801932-在一条SQL语句中关闭它们?不,那是不可能的。如果您正在编写过程性PL/SQL,则可以在编写过程中关闭它们,因为有一个操作顺序。优化器选择执行SQL的顺序是不确定的。在幕后,如果希望一个查询访问9个数据库,可能需要在所有9个数据库上准备一条SQL语句,以便在执行任何一个数据库之前验证语法和数据类型。