Oracle 不会从我的 ASP.NET 应用程序池中释放或终止非活动进程 and/or 会话

Oracle doesn't release or kill inactive process and/or session from my ASP.NET Application pool

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

无论出于何种原因,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 Process 和 Sessions 增加了一倍以上。

这有帮助,但只能延迟问题。

现在我们所做的是一个批处理文件,该文件 运行 每 10 分钟一次,并杀死 30 分钟后仍然存在的所有非活动会话(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

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

我们修复后,一切恢复正常。