我们在使用 PetaPoco micro-orm 的 C# 项目中遇到了问题。我们的 Oracle 数据库在另一台机器上,如果我们因维护或故障而关闭该机器,我们会在 C# PetaPoco 中出现此错误:
Exception="Connection request timed out
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode,
OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object
src, String procedure, Boolean bCheck, Int32 isRecoverable,
OracleLogicalTransaction m_OracleLogicalTransaction)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode,
OracleConnection conn, IntPtr opsErrCtx, Object src, OracleLogicalTransaction
m_oracleLogicalTransaction)
at Oracle.DataAccess.Client.OracleConnection.Open()
这没关系,但是当数据库恢复时,我们在尝试打开数据库时仍然收到相同的错误:Exception="连接请求超时...
我尝试将最大池大小设置为较低的数字(例如 3(,并尝试打开多个连接而不关闭它们以复制问题。不幸的是,我从这个实验中得到了一个不同的错误:池连接请求超时
当数据库 PC 在夜间关闭时,会发生这种情况。使用 SQLDeveloper 测试与数据库的连接是否有效。
有什么建议吗? 谢谢
几周前,我在开发工作站上收到池连接请求超时。
我能够通过将连接描述直接放入连接字符串而不是使用 TNS 来清除它。
而不是
...Data Source = MyTNSDescription...
我把它放在 Web.config 连接字符串中
... Data Source = (DESCRIPTION =(ADDRESS = <rest of connection description>...
突然间,问题消失了。如果问题与 Oracle 客户端/TNS 的特定配置有关,则可能会让您快速工作。无论如何,这是一件快速尝试的事情。