Oracle.DataAccess.Client.OracleConnection.Open()中的连接锁定

时间:2012-06-07 15:54:29

标签: oracle nhibernate nservicebus

生产应用程序每隔几天锁定一次。锁定总是在调用 Oracle.DataAccess.Client.OracleConnection.Open()。

有没有办法防止这种情况发生?


申请详情

  • .NET 4
  • 已编译为x64
  • 使用单线程NServiceBus处理程序
  • 使用FluentNHibernate
  • 连接超时设置为15秒
  • 应用程序正在使用分布式事务。事务中的另一个资源管理器是Microsoft Message Queue(通过NServiceBus)。

挂起线程的堆栈跟踪

[NDirectMethodFrameStandalone: 0000000028eeceb0] Oracle.DataAccess.Client.OpsCon.Enlist(IntPtr, Oracle.DataAccess.Client.OpoConValCtx*, Oracle.DataAccess.Client.OpoConRefCtx)
DomainBoundILStubClass.IL_STUB_PInvoke(IntPtr, Oracle.DataAccess.Client.OpoConValCtx*, Oracle.DataAccess.Client.OpoConRefCtx)
Oracle.DataAccess.Client.ConnectionPool.GetConnection(Oracle.DataAccess.Client.OpoConCtx)
Oracle.DataAccess.Client.ConnectionDispenser.Open(Oracle.DataAccess.Client.OpoConCtx)
Oracle.DataAccess.Client.OracleConnection.Open()
NHibernate.Connection.DriverConnectionProvider.GetConnection()
NHibernate.AdoNet.ConnectionManager.GetConnection()
(Application specific code from this point down...)

连接字符串

失败连接的连接字符串是:

user id=myuser;
password=mypassword;
data source=dbserver;
Pooling=true;
Min Pool Size=1;
Max Pool Size=40;
validate connection=false;
enlist=true

其中一个Oracle对象的转储显示以下设置:

Oracle.DataAccess.Client.OpoConCtx
40  maxPoolSize
1   minPoolSize
5   poolIncSize
1   poolDecSize
180 poolRegulator

0 个答案:

没有答案