这更具体地说是 SQL Server Reporting Services,但我也将此视为典型的 .Net 应用程序问题。
这是问题所在。我们正在使用 SSRS 报告来自 Oracle 数据库的数据。从第一天开始,我们的用户就抱怨他们收到诸如 ORA-2396: Exceeded maximum idle time, ORA-01012-Not logged on 等错误。
我们包括 DBA、应用程序开发人员、网络工程师,但到目前为止,我们找不到任何更好的线索。
最近在进行一些研究时,我观察到许多人已经记录了 .Net 与 oracle 连接的一个“已知”问题。正如他们所提到的,如果我们使用连接池,则池中甚至可能存在无用的连接。在下一次请求时,此连接可能会被使用,此时将引发错误。正如我们的 DBA 所确认的,我们的 oracle 实例设置为在空闲 X 分钟时终止连接。
以下是上述提到的链接 http://msdn.microsoft.com/en-us/library/8xx3tyca(v=VS.90).aspx
http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx
还有几个。但是,我在任何地方都没有得到非常确认的声明,表明是的,这是当前(.Net 和 oracle 等的最新版本)的问题。
在解决方案部分,他们提到我们将使用“Validate Connection=true”属性作为连接字符串的一部分。但如果我尝试使用它,它会显示“不支持关键字 - 验证连接”。(我也试过Validcon)
我的问题是这些 1. 是否确认存在从连接池读取的“脏”问题?2. 如果是,有什么解决办法?3. 如果不是,是什么导致了我们的问题。
如果您需要更多信息,请随时发表评论。