asp.net - Oracle 不会释放或终止我的 ASP.NET 应用程序池中的非事件进程和/或 session

标签 asp.net oracle connection-pooling odp.net application-pool

我们的网站刚刚遇到问题。我们正在 Windows 12 Azure 服务器上运行 Oracle 12c 数据库并使用 IIS 8。 ODP.NET 是我们使用的提供商。该网站是用 C# 构建的,并作为 64 位 Web 应用程序运行。

无论出于何种原因,Oracle 都没有释放我们的连接,一段时间后我们收到了 Oracle 错误:

ORA-12520: TNS:listener could not find available handler for requested type of server

我们审查了所有连接字符串,添加:

Min Pool Size=10;Max Pool Size=100;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5; Decr Pool Size=2

我们将 Oracle 配置中定义的 MAX 进程和 session 增加了一倍以上。

这有帮助,但只能延缓问题的发生。

目前我们所做的是一个批处理文件,该文件每 10 分钟运行一次,并杀死 30 分钟后仍然存在的所有非事件 session (ALTER SESSION KILL....IMMEDIATE)。

这就是我们现在的情况,我们已经启用了 ODP.NET 跟踪并等待明天查看它,但是此时,什么会导致此问题?

最佳答案

最后我在 ODP.NET Trace 中发现的是

TID: dac  (ERROR) Oracle error code=28002; Oracle msg=ORA-28002: the password will expire within 6 days

似乎这个错误并没有停止对数据库的访问,而是挂起池中的 session 。

修复该问题后,一切恢复正常。

关于asp.net - Oracle 不会释放或终止我的 ASP.NET 应用程序池中的非事件进程和/或 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342096/

相关文章:

javascript - 验证外部脚本是否已加载

database - oracle如何在内存中保存一个表?

database - oracle多用户功能

mysql - 具有单个应用程序服务器实例的数据库连接池

java - java webapp 中的 hsqldb 独立模式

javascript - 根据选定的单选按钮隐藏显示

c# - Asp.NET MVC 模型绑定(bind) - 使用绑定(bind)参数属性为简单类型分配前缀

javascript - 在一堆数字中找到一个未使用的数字

node.js - 迁移时 Knex 池已满

c# - 在填充到数据表之前将所有 excel 列格式化为常规