Page 1 of 1

Getting CLOB. Out of memory

Posted: Wed 18 Apr 2012 10:10
by KLGregor
Hi.
I have a function that returns CLOB value. I mapped it in my Entity Model and everything worked fine with small CLOBs. But when I tried to get a big CLOB (more than 200 Mb) I got an exception System.OutOfMemoryException

Code: Select all

   в Devart.Data.Oracle.OracleLob.ReadLobCache()
   в Devart.Data.Oracle.OracleLob..ctor(OracleConnection A_0, OracleDataReader A_1, Int32 A_2, b5 A_3, OracleDbType A_4)
   в Devart.Data.Oracle.OracleParameter.a(OracleDbType A_0, Object A_1, Type& A_2, Object& A_3, Byte[] A_4, Hashtable A_5, Int32 A_6, Int32 A_7, Int32 A_8, Int32 A_9, Boolean A_10, Boolean A_11, OracleCommand A_12, ParameterDirection A_13, ai A_14, String A_15)
   в Devart.Data.Oracle.OracleParameter.a(az& A_0, Boolean A_1, Boolean A_2, OracleCommand A_3, Byte[] A_4, Hashtable A_5, ai A_6)
   в Devart.Data.Oracle.OracleCommand.a(OracleParameterCollection A_0, az[] A_1, ch A_2, ai A_3)
   в Devart.Data.Oracle.OracleCommand.InternalExecute(CommandBehavior behavior, IDisposable disposable, Int32 startRecord, Int32 maxRecords, Boolean nonQuery)
   в Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
   в Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior)
   в System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   в Devart.Data.Oracle.Entity.e.a(CommandBehavior A_0)
   в Devart.Data.Oracle.Entity.e.b(CommandBehavior A_0)
   в System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   в System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   в System.Data.EntityClient.EntityCommandDefinition.Execute(EntityCommand entityCommand, CommandBehavior behavior)
   в System.Data.EntityClient.EntityCommand.ExecuteReader(CommandBehavior behavior)
   в System.Data.EntityClient.EntityCommand.ExecuteScalar[T_Result](Func`2 resultSelector)
   в System.Data.EntityClient.EntityCommand.ExecuteScalar()
   в SyncServicesModel.SyncServicesEntities.GETLNKSYNCSERVENTXMLDATA(Nullable`1 P_LINK_SYNC_SERV_ENT_ID, Nullable`1 P_IS_FULL_SYNC)
   в Upsmile.Sync.Initiator.USInService.EntitySync(Double aLinkSyncServiceEntitiesId, Boolean aIsFullSync)
What should I do to get big CLOBs?
My Devart version is 6.50.214.0 and I have more then 1 Gb free mamory

Posted: Mon 23 Apr 2012 14:36
by Shalex
We have reproduced and are investigating the issue with reading CLOBs via Entity Framework. As a workaround, please read CLOB values from the database via plain ADO.NET (OracleDataReader).