Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

System.OutOfMemoryException Oracle.DataAccess.Client.OracleParameter

1051942Nov 1 2013

Hi , nt

I am working on a legacy system where the end users reported exception while loading a page. This is developend in ASP.NET 2.0 and Oracle.DataAccess. The exception is not reproducible in any of the staging or development serves, and is not consistent.ie sometime works and sometiem not. The exception is as follows,
System.OutOfMemoryException: Insufficient memory to continue the execution of the program. at System.Runtime.InteropServices.Marshal.AllocCoTaskMem(Int32 cb) at Oracle.DataAccess.Client.OracleParameter.PreBind_Char() at Oracle.DataAccess.Client.OracleParameter.PreBind(OracleConnection conn, IntPtr errCtx, Int32 arraySize) at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()

The way it calls in the data access layes are as follows, removed some parameters to just to get flow clear,
public void GetXXXData    (
      UserCredentials credentials
      , decimal? P_IN_ID
      , string P_IN_TYPE
      , out string[] P_OUT_XX_ID
      , out string[] P_OUT_XX_NAME
     , int? outputArrayLength
    )
{
     if (outputArrayLength == null)
      {
        outputArrayLength = 3000; 
      }
        
      OdacCmd cmd = null;   
      P_OUT_XX_ID = null;
      P_OUT_XX_NAME = null;
      cmd = OdacFactory.CreateCommand("PK_XX_QAS1.pr_xx_data_q", credentials);

      cmd.AddParam("P_IN_ID", P_IN_ID);
      cmd.AddParam("P_IN_QUAL_TYPE", P_IN_TYPE);
      IDataParameter param_P_OUT_XX_ID = cmd.AddOutputParameterString("P_OUT_XX_ID", outputArrayLength.Value);
      IDataParameter param_P_OUT_XX_NAME = cmd.AddOutputParameterString("P_OUT_XX_NAME", outputArrayLength.Value);


       cmd.ExecuteNonQuery();
        P_OUT_XX_ID = OdacFactory.GetStringArray(param_P_OUT_XX_ID.Value);
        P_OUT_XX_NAME = OdacFactory.GetStringArray(param_P_OUT_XX_NAME.Value);
}

Any help on this is greatly apprecitaed

-Jyothish George

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 29 2013
Added on Nov 1 2013
0 comments
1,276 views