A little background on the system I'm working on:
It's an Enterprise system that has an Oracle database with about 500 tables, at the moment we have about 400 tables mapped in NHibernate.
We are running Oracle 11.
The code is written in C# running on .Net 3.5.
We are using NHibernate version : 3.3.1.4000.
Now to the problem:
During the authurization logic we first set up the NHibernate SessionFactory, this takes about 1 minute, after that we make the first call to the database and it's here that I get the error:
could not execute query
[ select USERID353_,OBJVERSION353_,FIRSTNAME353_,LASTNAME353_,DEPARTMENT353_,USERINIT6_353_,INTERNAL7_353_,MEMODIST8_353_,EMAILADD9_353_,USERCOM10_353_,DELETED353_,ADDRESS353_,DEFAULT13_353_ from ( select sprintuser0_.USERID as USERID353_, sprintuser0_.OBJVERSION as OBJVERSION353_, sprintuser0_.FIRSTNAME as FIRSTNAME353_, sprintuser0_.LASTNAME as LASTNAME353_, sprintuser0_.DEPARTMENT as DEPARTMENT353_, sprintuser0_.USERINITIALS as USERINIT6_353_, sprintuser0_.INTERNALADDRESS as INTERNAL7_353_, sprintuser0_.MEMODISTRIBUTIONGROUP as MEMODIST8_353_, sprintuser0_.EMAILADDRESS as EMAILADD9_353_, sprintuser0_.USERCOMMENT as USERCOM10_353_, sprintuser0_.DELETED as DELETED353_, sprintuser0_.ADDRESS as ADDRESS353_, sprintuser0_.DEFAULTRESPONSIBILITYAREAOID as DEFAULT13_353_ from SPRINTUSER sprintuser0_ where sprintuser0_.USERID=:p0 ) where rownum <=1 ]
Name:p1 - Value:V0C0359
[SQL: select USERID353_,OBJVERSION353_,FIRSTNAME353_,LASTNAME353_,DEPARTMENT353_,USERINIT6_353_,INTERNAL7_353_,MEMODIST8_353_,EMAILADD9_353_,USERCOM10_353_,DELETED353_,ADDRESS353_,DEFAULT13_353_ from ( select sprintuser0_.USERID as USERID353_, sprintuser0_.OBJVERSION as OBJVERSION353_, sprintuser0_.FIRSTNAME as FIRSTNAME353_, sprintuser0_.LASTNAME as LASTNAME353_, sprintuser0_.DEPARTMENT as DEPARTMENT353_, sprintuser0_.USERINITIALS as USERINIT6_353_, sprintuser0_.INTERNALADDRESS as INTERNAL7_353_, sprintuser0_.MEMODISTRIBUTIONGROUP as MEMODIST8_353_, sprintuser0_.EMAILADDRESS as EMAILADD9_353_, sprintuser0_.USERCOMMENT as USERCOM10_353_, sprintuser0_.DELETED as DELETED353_, sprintuser0_.ADDRESS as ADDRESS353_, sprintuser0_.DEFAULTRESPONSIBILITYAREAOID as DEFAULT13_353_ from SPRINTUSER sprintuser0_ where sprintuser0_.USERID=:p0 ) where rownum <=1]
at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
at NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
at NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression, QueryParameters queryParameters, IList results)
at NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression queryExpression, QueryParameters parameters)
at NHibernate.Impl.ExpressionQueryImpl.List()
at NHibernate.Linq.DefaultQueryProvider.ExecuteQuery(NhLinqExpression nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
at NHibernate.Linq.DefaultQueryProvider.Execute(Expression expression)
at NHibernate.Linq.DefaultQueryProvider.Execute[TResult](Expression expression)
at System.Linq.Queryable.Any[TSource](IQueryable`1 source)
at t916DataRepository.t916Common.SprintUserRespository.GetSprintUserEagerly(String userId) in c:\Builds\30\14\Sources\Server\t916DataRepository\t916Common\SprintUserRespository.cs:line 17
at t916Common.com.common.authorization.AuthorizationMgr2.GetUserDataStructure(String userId)
at t916CommonService.Services.AuthorizationService.GetUserDataStructure2(String userId) in c:\Builds\30\14\Sources\Server\t916CommonService\Services\AuthorizationService.svc.cs:line 726
NHibernate
ORA-00028: your session has been killed
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, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior)
at Oracle.DataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean autoDiscoverTypes, Boolean callable, RowSelection selection, ISessionImplementor session)
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
Oracle Data Provider for .NET
If I try the same after about a second it works.
This error only happens occasionally.
The inner exception(s) will tell you why.
Addition: In general, you must ALWAYS log or review all inner exceptions recursively when dealing with .Net code.