我正在使用Oracle的Entity Framework创建一个MVC应用程序,并编写一些代码来迭代所有相关的DBLink并对其进行测试,并返回结果网格(成功/失败)。我的问题是,在使用第四个DBLink之后,出现错误“ ORA-02020:正在使用太多数据库链接”。
我尝试在使用每个DBLink后显式关闭它(“更改会话关闭数据库链接LinkName”),但是随后收到错误消息“ ORA-02080:数据库链接正在使用”。
在尝试关闭DBLink之前,我曾尝试发出“ COMMIT”语句,但这并没有改变错误(“正在使用数据库链接”)。
我尝试关闭数据库连接,但是在创建新连接并尝试关闭DBLink时,仍然收到“正在使用数据库链接”错误。
不幸的是,增加可用的DBLink数量(open_links,open_links_per_instance)不是一种选择。
有人用Entity Framework看到了这一点并找到了解决方案吗?有谁对其他尝试有任何想法?
答案 0 :(得分:0)
要查看您的会话中有多少db links
个打开,请使用GV$DBLINK
视图
select DB_LINK from GV$DBLINK;
DB_LI
-----
LEDRP
YDO
要关闭db link
,您必须做两件事。
首先进行commit
或rollback
交易。请注意,即使您不进行任何更改,由于使用了DB LINK
,交易也被打开了。
第二,您必须使用ALTER SESSION
语句CLOSE DATABASE LINK
。
rollback;
ALTER SESSION CLOSE DATABASE LINK LEDRP;
您看到的是,该链接已关闭并且不在视图中显示:
select DB_LINK from GV$DBLINK;
DB_LI
-----
YDOV
答案 1 :(得分:0)
胜利!我发现,如果在连接字符串中设置“ Pooling = false”,那么在所有有害的情况下该错误都会消失。这对我来说是可行的,因为它仅用于按需测试DBLink,因此在这种情况下,我可以安全地关闭池。非常感谢您的回复。我准备上交毛巾并承认失败