我们的网站刚刚遇到问题。我们正在 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/