数据库重新联机后,连接请求超时

时间:2018-08-22 12:04:36

标签: c# oracle timeout connection pool

在使用PetaPoco微型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测试到数据库的连接是否有效。

有什么建议吗? 谢谢

1 个答案:

答案 0 :(得分:0)

几周前,我在开发工作站上收到池化的连接请求超时。

通过将连接描述直接放入连接字符串而不是使用TNS,我能够清除这一点。

代替

...Data Source = MyTNSDescription...

我将其放在Web.config连接字符串中

... Data Source = (DESCRIPTION =(ADDRESS = <rest of connection description>...

突然,问题消失了。如果问题与您的Oracle Client / TNS的特定配置有关,则可能会使您快速工作。无论如何,这是一件快速的事情。