【问题标题】:How do I work around the Oracle DBLinks limit in Entity Framework?如何解决 Entity Framework 中的 Oracle DBLinks 限制?
【发布时间】:2018-11-30 04:48:33
【问题描述】:

我正在使用 Oracle 的实体框架创建一个 MVC 应用程序,并且正在编写一些代码来遍历所有相关的 DBLink 并对其进行测试,从而返回一个结果网格(成功/失败)。我的问题是,在使用第四个 DBLink 后,我得到一个错误“ORA-02020: too many database links in use”。

我尝试在使用每个 DBLink 后显式关闭它(“alter session close database link LinkName”),但随后我收到错误“ORA-02080: database link is in use”。

我曾尝试在尝试关闭 DBLink 之前发出“COMMIT”语句,但这并没有改变错误(“数据库链接正在使用中”)。

我尝试关闭数据库连接,但在创建新连接并尝试关闭 DBLink 时仍然收到“数据库链接正在使用”错误。

很遗憾,增加可用 DBLink 的数量(open_links、open_links_per_instance)不是一种选择。

有没有人在 Entity Framework 中看到这一点并找到了解决方案?有没有人知道还有什么可以尝试的?

【问题讨论】:

    标签: oracle entity-framework


    【解决方案1】:

    胜利!我发现如果我在我的连接字符串中设置“Pooling=false”,那么这个错误在所有有问题的场景中都会消失。这对我来说是可行的,因为这只是用于按需测试 DBLink,所以我可以在这种情况下安全地关闭池。非常感谢您的回复。我已经准备好认输认输了

    【讨论】:

      【解决方案2】:

      要查看有多少 db links 处于打开状态,我在您的会话中使用 GV$DBLINK 视图

      select DB_LINK from GV$DBLINK;
      
      DB_LI
      -----
      LEDRP
      YDO
      

      要关闭db link,您必须做两件事。

      首先commitrollback 交易。请注意,即使您不更改任何内容,由于使用了DB LINK,事务也会打开。

      其次,您必须使用ALTER SESSION 语句CLOSE DATABASE LINK

      rollback;
      ALTER SESSION CLOSE DATABASE LINK LEDRP;
      

      您看,该链接已关闭并且不在视图中显示:

      select DB_LINK from GV$DBLINK;
      
      DB_LI
      -----
      YDOV
      

      【讨论】:

      • 感谢您的回复,但这些都是我已经尝试过的(见原帖)。没有运气。
      • @ameritrash 请稍微描述一下您的运气不佳。对我来说,这在 11.2 中运行良好,如图所示。
      • var results = dbContext.Database.SqlQuery<string>("select * from dual@DBLINKNAME").ToList(); // ToList so it will actually execute! dbContext.Database.ExecuteSqlCommand("ROLLBACK"); // success dbContext.Database.ExecuteSqlCommand("alter session close database link DBLINKNAME"); // get "ORA-02080: database link is in use".
      • 如果我也直接使用 Oracle.ManagedDataAccess.Client.OracleConnection,错误是相同的(“ORA-02080:数据库链接正在使用”)。所以它不像我想的那样特定于实体框架。
      • 我还尝试显式关闭连接并在新连接上关闭会话。仍然没有运气。很遗憾。
      猜你喜欢
      • 2020-09-18
      • 2011-12-07
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2021-12-16
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多