Oracle 错误:池连接请求超时

2024-03-26

我将 Oracle12c 与用 C# 编写的应用程序一起使用,并使用 Oracle.ManagedDataAccess.dll 来处理数据库连接。

我们的产品在运行多年后偶尔会抛出此异常:

Oracle.ManagedDataAccess.Client.OracleException (0xFFFFFC0C): Pooled connection request timed out
   at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
   at Oracle.ManagedDataAccess.Client.OracleConnection.Open()

我知道这个错误的原因。查看代码,OracleConnection 或 OracleCommand 对象都没有被释放。因此,这些连接正在建立,直到最终抛出此异常。

修复方法很简单。把这些包起来Using声明。我不需要这方面的帮助。

然而,我感兴趣的是为什么这个问题现在开始了。该软件运行多年没有出现任何问题。他们做了一些数据库维护,更新了同一服务器上的其他软件,然后这个问题就开始了。我不知道他们做了什么 Db 维护。

应用程序中的连接字符串未指定任何池属性。

是否有一个 oracle 数据库设置会导致数据库中的并发连接数减少,从而导致这种情况开始发生?

UPATE

我编写了一个小测试应用程序来检查限制。 它只是循环并打开连接,执行基本查询并且不会释放连接。 在我的测试系统上,它在 640 次循环后开始抛出此异常。每次我运行它时,它都会变化给或采取 10 个循环。

是什么设置了这个限制?


我刚刚遇到了同样的问题。

出现该异常的原因是 Oracle Pool Manager 不再有空闲连接(默认情况下最多可以有 100 个连接)。通常,该问题的原因不是连接关闭。

尽管您已经找到了该问题的解决方案,但我想添加这些:

  • 调整最小池大小(或最大池大小,但默认为 100 应该足够了):因此始终有一个连接可供使用,并且不必建立连接(请参阅https://docs.oracle.com/en/database/oracle/oracle-database/21/jjucp/optimizing-ucp-behavior.html#GUID-FFCAB66D-45B3-4D7B-991B-40F1480630FD https://docs.oracle.com/en/database/oracle/oracle-database/21/jjucp/optimizing-ucp-behavior.html#GUID-FFCAB66D-45B3-4D7B-991B-40F1480630FD)
  • 更新到 Oracle.ManagedDataAcess >= 21.8.0 ( Bug 34322469 - 连接池因 POOLMANAGER.GET() 内循环而抛出“连接请求超时”异常,已修复)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle 错误:池连接请求超时 的相关文章

随机推荐

  • 使用rest_framework.authtoken.views.obtain._auth_token时发生CSRF错误

    我正在打电话obtain auth token来自如下网址 url r api token rest framework authtoken views obtain auth token 我回来了 detail CSRF Failed C
  • EF Core 如何防止在 OnModelCreating() 中多次调用播种?

    根据文件 通常OnModelCreating 仅在创建派生上下文的第一个实例时调用一次 然后 该上下文的模型将被缓存 并且适用于应用程序域中该上下文的所有其他实例 现在考虑我的代码 protected override void OnMod
  • 如何在react-native中从AsyncStorage中删除项目

    如何从 AsyncStorage 中删除项目 现在我正在尝试这段代码 AsyncStorage removeItem userId 但这对我不起作用 尝试这个 async removeItemValue key try await Asyn
  • 检测window.print是确认还是取消

    你好 我有一个打印代码 我打开一个窗口 这个弹出窗口包含所有打印信息 我使用kiosk printing对于自动打印 但有时会失败 例如 如果chrome与其他实例打开 我会遇到问题 因为我需要确认每个打印 然后我需要知道是否存在一种方法来
  • React 中的 setTimeout 和clearTimeout

    当用户使用 setTimeout 和clearTimeout 在页面上 30 秒内没有进行任何点击事件时 我正在努力创建注销功能 但每次用户点击页面上的任何内容时 剩余时间必须再次重置为 30 秒 或者作为另一个选项 将使用clearTim
  • 如何消除 DirectShow 过滤器链中 1 秒的延迟? (使用Delphi和DSPACK)

    我有一个 Delphi 6 Pro 应用程序 它使用 DSPACK 组件库将音频从系统的首选音频输入设备发送到 Skype 我正在使用 TSampleGrabber 组件进入 Filter Graph 链 然后将音频缓冲区发送到 Skype
  • 当在 erlang 模块上调用“new”时,它会做什么?

    我见过 Erlang 代码中使用了 module name new 但是 module name 模块中没有引用 new 函数 新 有什么作用 它用于 参数化模块 参见here http yarivsblog com articles 20
  • 在 Swing JFrame 上添加 WebView 控件

    我正在开发与 JavaFX 控件混合的 Swing 应用程序 我创建了一个 JavaFX 控件 WebView 浏览 HTML 文件 但我想要 要知道 如何在 Swing 的容器上添加此 Web 视图控件JFrame 鉴于已经存在jFram
  • 使用 std::sort 对二维数组进行排序(基于列)

    我正在运行一个测试 显示按列对二维数组进行排序的好处 方法是将数据提取到单个数组中并对该数组进行排序 然后将其复制回列 我想运行 std sort 作为每次运行的排序算法 我试图弄清楚如何首先在适当的位置运行循环 然后再进行二维数组的复制
  • 保存为 PDF 时,geom_raster 出现“污点”

    当我保存使用的 ggplot 时geom raster 瓷砖 被涂抹 了 如果我使用的话结果是一样的ggsave or pdf 我没有这个问题geom tile or image 我使用 RStudio X11 或 PNG 图形设备时没有出
  • 将变量从 Activity 传递到自定义视图类

    我正在测试使用将音频绘制到画布中canvas drawLine 方法 我能够在画布上进行静态绘制 基本上我有一个测试应用程序 它有两个按钮 开始 和 停止 和一个画布 我试图在其中绘制从 FFT 获得的音频频率 当我按下开始按钮时 它开始使
  • 比较两个通用列表

    你好 我如何比较两个Lists 第一种类型ICollections
  • 从功能区按钮触发报告

    我有几个自定义报告 我希望能够向功能区添加触发它们的按钮 是否可以 如果是这样 任何例子都会很棒 提前致谢 要从功能区按钮运行报告 您需要创建一个 js 文件 其中包含将从按钮调用的函数 你需要 4 样东西 rdlName rdl 文件名
  • OS X 上的 GitHub 客户端提交失败(“无法添加文件...)

    我正在尝试从 Mac OS X Mavericks 计算机上的 GitHub 客户端提交对代码所做的更改 像往常一样 我向我的项目添加了一个新包 这是一个 Laravel 项目 我添加了 Rocketeer 包 我还做了一些配置更改 我收到
  • 如何相对于另一个轴定位图中的轴?

    在 MATLAB 中布置图窗时 输入axis equal确保无论发生什么figure尺寸 即axes永远是正方形 我当前的问题是我想向该图中添加第二个轴 通常 这没有问题 我只想输入axes x1 y1 x2 y2 并且将添加一个新的正方形
  • 在多个 .env 文件之间切换,例如 .env.development 和 node.js

    我想为每种模式 开发 生产等 使用单独的 env 文件 在处理我的 vue js 项目时 我可以使用类似的文件 env development or env production为同一环境键获取不同的值 例如 在 env developme
  • 附加元素后 CSS 过渡不起作用

    我遇到了 CSS 转换问题 在尝试其他操作之前 我想了解问题所在 一个容器中有 3 个盒子和一个 下一步 按钮 目标是让下一个框顶部出现在顶部 并在按下 下一个 按钮时淡入 通过将框附加到容器来将其定位在顶部 以便将其添加为最后一个元素 从
  • 如何使用ClearCase注释子命令?

    我试图找出如何获取代码历史记录报告 在其中获取每个代码行的文件版本 我不需要为每个代码行获取多行 只有一个 annotate 子命令有很多参数 我找不到适合该目的的参数 你知道如何得到它吗 非常感谢 每个代码行的文件版本 这几乎看起来像最后
  • 对于非 OK 响应,使用 IHttpActionResult 返回内容

    对于从 Web API 2 控制器返回 如果响应正常 状态 200 我可以返回响应内容 如下所示 public IHttpActionResult Get string myResult return Ok myResult 如果可能的话
  • Oracle 错误:池连接请求超时

    我将 Oracle12c 与用 C 编写的应用程序一起使用 并使用 Oracle ManagedDataAccess dll 来处理数据库连接 我们的产品在运行多年后偶尔会抛出此异常 Oracle ManagedDataAccess Cli