Recently when I worked on wcf-oracle Adapter issue in BizTalk. I got the timeout exception very often during composite operations. I increased the timeout parameters to check if my operations are getting executed. To my surprise I found the timeout exception still occurring.
When I correlated the failed messages with the success ones, it had more instances of operation to be executed. When executing the failed scenario I could see that the number of active connections were high.
A message sent to adapter "WCF-Custom" on send port "WcfSendPort_OracleDBBinding_Package_XXX" with URI "oracledb://OracleDBServer/" is suspended. Error details: Microsoft.ServiceModel.Channels.Common.ConnectionException: Connection request
timed out --->
Oracle.DataAccess.Client.OracleException: Connection request timed out
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
at Microsoft.Adapters.OracleCommon.OracleCommonConnectionWrapper..ctor(String connectionString, OracleCommonExecutionHelper executionHelper)
at Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)
So, the issue was not while opening the connection but it exhausted the number of connections from the pool. Increasing the minPoolSize and maxPoolSize resolved the issue.
Note: Increasing the pool size might impact performance. Find the optimal value for the respective environment through trial and error.
Hope this helps!
Microsoft GTSC, India