ODP.net - ORA-12537 Ошибки конца файла при вызове хранимой процедуры

Я озадачен вышесказанным, который периодически появляется, когда я выполняю сохраненный процесс в пакете в нашей новой установке Oracle.

Sproc вызывается из WCF, который возвращает следующее исключение:

<ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">  
           <HelpLink i:nil="true"/>  
           <InnerException>  
              <HelpLink i:nil="true"/>  
              <InnerException i:nil="true"/>  
              <Message>ORA-12537: Network Session: End of file</Message>  
              <StackTrace><![CDATA[at OracleInternal.Network.ReaderStream.Read(OraBuf OB)  
   at OracleInternal.TTC.OraBufReader.GetDataFromNetwork()  
   at OracleInternal.TTC.OraBufReader.Read(Boolean bIgnoreData)  
   at OracleInternal.TTC.MarshallingEngine.UnmarshalUB1(Boolean bIgnoreData)  
   at OracleInternal.TTC.TTCExecuteSql.ReceiveExecuteResponse(Accessor[]& defineAccessors, Accessor[] bindAccessors, Boolean bHasReturningParams, SQLMetaData& sqlMetaData, SqlStatementType statementType, Int64 noOfRowsFetchedLastTime, Int32 noOfRowsToFetch, Int32& noOfRowsFetched, Int64& queryId, Int32 longFetchSize, Int64 initialLOBFetchSize, Int64[] scnFromExecution, Boolean bAllInputBinds, Int32 arrayBindCount, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Int64[]& rowsAffectedByArrayBind, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause, List`1& implicitRSList, Boolean bLOBArrayFetchRequired)]]></StackTrace>  
              <Type>OracleInternal.Network.NetworkException</Type>  
           </InnerException>  
           <Message>ORA-12537: Network Session: End of file</Message>  
           <StackTrace><![CDATA[at Oracle.ManagedDataAccess.Client.OracleException.HandleError(OracleTraceLevel level, OracleTraceTag tag, Exception ex, OracleLogicalTransaction oracleLogicalTransaction)  
   at OracleInternal.TTC.TTCExecuteSql.ReceiveExecuteResponse(Accessor[]& defineAccessors, Accessor[] bindAccessors, Boolean bHasReturningParams, SQLMetaData& sqlMetaData, SqlStatementType statementType, Int64 noOfRowsFetchedLastTime, Int32 noOfRowsToFetch, Int32& noOfRowsFetched, Int64& queryId, Int32 longFetchSize, Int64 initialLOBFetchSize, Int64[] scnFromExecution, Boolean bAllInputBinds, Int32 arrayBindCount, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Int64[]& rowsAffectedByArrayBind, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause, List`1& implicitRSList, Boolean bLOBArrayFetchRequired)  
   at OracleInternal.ServiceObjects.OracleDataReaderImpl.FetchMoreRows(Int32 noOfRowsToFetch, Boolean fillReader, Boolean returnPSTypes)  
   at Oracle.ManagedDataAccess.Client.OracleDataReader.Read()  
   at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)  
   at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)  
   at System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)  
   at Oracle.ManagedDataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)  
   at Oracle.ManagedDataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)  
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)  
   at ***REDACTED***  
   at ***REDACTED***  
   at ***REDACTED***  
   at SyncInvokeQtyAdjustments_Get(Object , Object[] , Object[] )  
   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)  
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)  
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)]]></StackTrace>  
           <Type>Oracle.ManagedDataAccess.Client.OracleException</Type>  
        </ExceptionDetail>  

Кажется, что в этом нет и паттерна - иногда он работает нормально, иногда нет.

Вот что я пробовал:

  • Проверен GAC, чтобы убедиться, что несколько версий ODP отсутствуют. Компонент управляемого доступа к данным был импортирован из nuget - версия 12.1.2400.
  • Для сортировки добавлены различные атрибуты в строку подключения, а именно: постоянная информация о безопасности =True; самонастройка =True; минимальный размер пула =3; максимальный размер пула =25;Incr размер пула =3;Decr размер пула =1; тайм-аут соединения =20;Pooling=false; Время жизни соединения =59; - пробовал различные конфигурации, но не повезло, например, установил Pooling на false / true и т. д.
  • Обеспечено удаление объектов в общем коде. Вот тестовый код, используемый в настоящее время:

    using System.Data;  
    using System.Data.Common;  
    using Oracle.ManagedDataAccess.Client;  
    
    
    /// <summary>  
    /// Extensions for xxxxx.  
    /// </summary>  
    /// <seealso cref="System.Data.Entity.DbContext" />  
    public partial class xxxxEntities  
    {  
    
    
        public virtual DataSet ExecuteStoredProcedureAsDataSet(string storedProcName, int commandTimeoutSeconds, object[] parameters)  
        {  
            var sqlCommand = this.Database.Connection.CreateCommand();  
            var resultSet = new DataSet();  
    
    
            sqlCommand.CommandType = CommandType.StoredProcedure;  
            sqlCommand.CommandTimeout = commandTimeoutSeconds;  
            sqlCommand.CommandText = storedProcName;  
    
    
            sqlCommand.Parameters.AddRange(parameters);  
    
    
            var referenceCursor = new OracleParameter("P_DATAOUT", OracleDbType.RefCursor)  
            {  
                Direction = ParameterDirection.Output  
            };  
    
    
            sqlCommand.Parameters.Add(referenceCursor);  
    
            using (var adapter = CreateDataAdapter(this.Database.Connection))  
            {  
                adapter.SelectCommand = sqlCommand;  
    
    
                adapter.Fill(resultSet);  
            }  
    
    
            referenceCursor.Dispose();  
            sqlCommand.Dispose();  
    
    
            return resultSet;  
        }  
    
    
    
    
        /// <summary>  
        /// Creates the data adapter.  
        /// </summary>  
        /// <param name="connection">The connection.</param>  
        /// <returns>DbDataAdapter.</returns>  
        DbDataAdapter CreateDataAdapter(DbConnection connection)  
        {  
            return DbProviderFactories.GetFactory(connection).CreateDataAdapter();  
        }  
    }  
    
  • Сокращение запроса в хранимой процедуре до "фиксированных" значений - чтобы убедиться, что в sproc ничего не было причиной проблемы. Я нашел некоторые интересные проблемы, описанные ниже.

Итак, я в растерянности. Я включил трассировку ODP - и заметил, что, похоже, возникают проблемы при работе с пулом. В первый раз я получил это:

2016-07-26 11:43:55.268765 TID:6   (PRI) (SVC) (ENT) OracleConnectionImpl.EvaluateDbMajorMinorPatchsetVersion()  
2016-07-26 11:43:55.268765 TID:6   (PRI) (SVC) (EXT) OracleConnectionImpl.EvaluateDbMajorMinorPatchsetVersion()  
2016-07-26 11:43:55.268765 TID:6   (PRI) (SVC) (EXT) OracleConnectionImpl.Connect() (oper=open) (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;F;WMSQA;N) (pmid=29382239)  
2016-07-26 11:43:55.268765 TID:6   (PRI) (ENT) (CP) PoolManager`3.PutNewPR() (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;F;WMSQA;N) (pmid=29382239)  
2016-07-26 11:43:55.268765 TID:6   (PRI) (ENT) (CP) OraclePool.PutNewPR()  
2016-07-26 11:43:55.268765 TID:6   (PRI) (ENT) (CP) Pool`3.PutNewPR()  
2016-07-26 11:43:55.268765 TID:6   (PRI) (CP) Pool`3.PutNewPR() (oper=cp:put:reg1) (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;T;WMSQA;N) (pmid=29382239)  
2016-07-26 11:43:55.268765 TID:6   (PRI) (EXT) (CP) Pool`3.PutNewPR()  
2016-07-26 11:43:55.268765 TID:6   (PRI) (EXT) (CP) OraclePool.PutNewPR()  
2016-07-26 11:43:55.268765 TID:6   (PRI) (EXT) (CP) PoolManager`3.PutNewPR() (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;T;WMSQA;N) (pmid=29382239)  
2016-07-26 11:43:55.269765 TID:6   (PRI) (EXT) (CP) PoolManager`3.CreateNewPR() (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;T;WMSQA;N) (pmid=29382239)  
2016-07-26 11:43:55.269765 TID:6   (PRI) (CP) PoolManager`3.PopulatePool() PopulatePoolThreadFunc(created=2; max=25; total=3)  
2016-07-26 11:43:55.269765 TID:6   (PRI) (EXT) (CP) PoolManager`3.PopulatePool()  
2016-07-26 11:43:55.880826 TID:15  (PRI) (ENT) TTCExecuteSql.ReceiveExecuteResponse()  
2016-07-26 11:43:55.881826 TID:15  (PRI) (ENT) OracleException.ctor()  
2016-07-26 11:43:55.885826 TID:15  (PRI) (ENT) OracleError.ctor()  
2016-07-26 11:43:55.886826 TID:15  (PRI) (EXT) OracleError.ctor()  
2016-07-26 11:43:55.886826 TID:15  (PRI) (EXT) OracleException.ctor()  
2016-07-26 11:43:55.890827 TID:15  (PRI) (TTC) (ERR) TTCExecuteSql.ReceiveExecuteResponse() (txnid=n/a) OracleInternal.Network.NetworkException (0x000030F9): ORA-12537: Network Session: End of file  
   at OracleInternal.Network.ReaderStream.Read(OraBuf OB)  
   at OracleInternal.TTC.OraBufReader.GetDataFromNetwork()  
   at OracleInternal.TTC.OraBufReader.Read(Boolean bIgnoreData)  
   at OracleInternal.TTC.MarshallingEngine.UnmarshalUB1(Boolean bIgnoreData)  
   at OracleInternal.TTC.TTCExecuteSql.ReceiveExecuteResponse(Accessor[]& defineAccessors, Accessor[] bindAccessors, Boolean bHasReturningParams, SQLMetaData& sqlMetaData, SqlStatementType statementType, Int64 noOfRowsFetchedLastTime, Int32 noOfRowsToFetch, Int32& noOfRowsFetched, Int64& queryId, Int32 longFetchSize, Int64 initialLOBFetchSize, Int64[] scnFromExecution, Boolean bAllInputBinds, Int32 arrayBindCount, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Int64[]& rowsAffectedByArrayBind, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause, List`1& implicitRSList, Boolean bLOBArrayFetchRequired)  

Увеличив трассировку до 127, я просто получил это:

2016-07-26 14:22:11.459348 TID:1   (PRI) (SVC) (ENT) OracleDataReaderImpl.FetchMoreRows()  
2016-07-26 14:22:11.459348 TID:1   (PRI) (SVC) (ENT) OracleConnectionImpl.AddAllPiggyBackRequests()  
2016-07-26 14:22:11.459348 TID:1   (PRI) (TTC) (ENT) TTCClose.Write()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCFunction.WriteFunctionHeader()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCMessage.WriteTTCCode()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (EXT) TTCMessage.WriteTTCCode()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (EXT) TTCFunction.WriteFunctionHeader()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (EXT) TTCClose.Write()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (SVC) (EXT) OracleConnectionImpl.AddAllPiggyBackRequests()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCExecuteSql.SendExecuteRequest()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCExecuteSql.GetExecuteOptions()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (EXT) TTCExecuteSql.GetExecuteOptions()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCExecuteSql.WriteOall8Message()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCFunction.WriteFunctionHeader()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCMessage.WriteTTCCode()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (EXT) TTCMessage.WriteTTCCode()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (EXT) TTCFunction.WriteFunctionHeader()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCExecuteSql.WritePisdef()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (EXT) TTCExecuteSql.WritePisdef()  
2016-07-26 14:22:11.460348 TID:1   (PRI) (TTC) (ENT) TTCExecuteSql.WritePisdefData()  
2016-07-26 14:22:11.461348 TID:1   (PRI) (TTC) (EXT) TTCExecuteSql.WritePisdefData()  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 00 4C 00 00 06 00 00 00   |.L......|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 00 00                     |..      |  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 11 69 00 01 01 01 01 02   |.i......|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 03 5E 00 02 80 40 01 03   |.^...@..|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 00 00 01 01 0D 00 00 00   |........|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 00 01 01 00 00 00 00 00   |........|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 00 00 00 00 00 00 01 00   |........|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 00 00 00 00 00 00 00 00   |........|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 02 01 36 00 00 00 03 A7   |..6.....|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) EB C6 00 01 01 00 00 00   |........|  
2016-07-26 14:22:11.461348 TID:1   (NET) (SND) 00 00                     |..      |  
2016-07-26 14:22:11.461348 TID:1   (PRI) (TTC) (EXT) TTCExecuteSql.WriteOall8Message()  
2016-07-26 14:22:11.461348 TID:1   (PRI) (TTC) (EXT) TTCExecuteSql.SendExecuteRequest()  
2016-07-26 14:22:11.461348 TID:1   (PRI) (TTC) (ENT) TTCExecuteSql.ReceiveExecuteResponse()  
2016-07-26 14:22:11.461348 TID:1   (PRI) (BUF) (COBP.GET) (poolid:2) (key:8192) (bufid:8) (count:5) (OraBufReader.GetDataFromNetwork)  
2016-07-26 14:22:12.161348 TID:1   (PRI) (ENT) TTCExecuteSql.ReceiveExecuteResponse()  
2016-07-26 14:22:12.162348 TID:1   (PRI) (ENT) OracleException.ctor()  
2016-07-26 14:22:12.162348 TID:1   (PRI) (ENT) OracleError.ctor()  
2016-07-26 14:22:12.162348 TID:1   (PRI) (EXT) OracleError.ctor()  
2016-07-26 14:22:12.162348 TID:1   (PRI) (EXT) OracleException.ctor()  
2016-07-26 14:22:12.163348 TID:1   (PRI) (TTC) (ERR) TTCExecuteSql.ReceiveExecuteResponse() (txnid=n/a) OracleInternal.Network.NetworkException (0x000030F9): ORA-12537: Network Session: End of file  
   at OracleInternal.Network.ReaderStream.Read(OraBuf OB)  
   at OracleInternal.TTC.OraBufReader.GetDataFromNetwork()  
   at OracleInternal.TTC.OraBufReader.Read(Boolean bIgnoreData)  
   at OracleInternal.TTC.MarshallingEngine.UnmarshalUB1(Boolean bIgnoreData)  
   at OracleInternal.TTC.TTCExecuteSql.ReceiveExecuteResponse(Accessor[]& defineAccessors, Accessor[] bindAccessors, Boolean bHasReturningParams, SQLMetaData& sqlMetaData, SqlStatementType statementType, Int64 noOfRowsFetchedLastTime, Int32 noOfRowsToFetch, Int32& noOfRowsFetched, Int64& queryId, Int32 longFetchSize, Int64 initialLOBFetchSize, Int64[] scnFromExecution, Boolean bAllInputBinds, Int32 arrayBindCount, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Int64[]& rowsAffectedByArrayBind, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause, List`1& implicitRSList, Boolean bLOBArrayFetchRequired)  
2016-07-26 14:22:12.163348 TID:1   (PRI) (EXT) TTCExecuteSql.ReceiveExecuteResponse()  
2016-07-26 14:22:12.163348 TID:1   (PRI) (TTC) (EXT) TTCExecuteSql.ReceiveExecuteResponse()  
2016-07-26 14:22:12.163348 TID:1   (PRI) (ENT) OracleDataReaderImpl.FetchMoreRows()  
2016-07-26 14:22:12.163348 TID:1   (PRI) (SVC) (ERR) OracleDataReaderImpl.FetchMoreRows() (txnid=n/a) Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-12537: Network Session: End of file ---> OracleInternal.Network.NetworkException (0x000030F9): ORA-12537: Network Session: End of file  

Я подправил запрос в sproc, закомментировав операторы select и where, и постепенно ввел их обратно, чтобы увидеть, является ли этот запрос проблемой (хотя его выполнение в Oracle Developer работает нормально). Я сузил его до следующего утверждения - если я его снова ввожу, я снова получаю исключения конца файла:

WHERE  
      -- Only handle records that contain a numeric value in the ref field.  
      ISNUMERIC(PTT.REF_FIELD_2) = 1  

Так выглядит функция ISNUMERIC в пакете;

  FUNCTION ISNUMERIC (p_string IN VARCHAR2) RETURN INT  
  IS  
    v_new_num NUMBER;  
  BEGIN  
    IF p_string IS NULL  
    THEN  
      RETURN 0;  
    END IF;  

    v_new_num := TO_NUMBER(p_string);  
    RETURN 1;  
  EXCEPTION  
    WHEN VALUE_ERROR THEN  
      RETURN 0;  
  END ISNUMERIC;  

Сначала я подумал, что, возможно, количество обнаруженных исключений препятствует дальнейшему выполнению из-за количества исключений. Однако я упростил функцию, чтобы просто вернуть "1", и она все еще не работала каждый раз.

Результаты запроса передаются обратно через курсор ref, например

PROCEDURE DEVSP_API_GETxxxx(  
    P_STARTDATE IN DATE  
  , P_ENDDATE IN DATE   
  , P_xxx IN P_xxx_TYPE   
  , <snip>  

  , P_DATAOUT OUT sys_refcursor  
  ) AS  
  BEGIN  

    OPEN P_DATAOUT FOR  


    SELECT   
      'asdsa' as "x",  
      'sadasdsad' as "z",  
      0 as "Qty",  
<snip>  

Наконец, я удалил все вызовы функций из операторов выбора и предложений where - и это мгновенно останавливает возникновение ошибки - я заменил их той же логикой, которую должна выполнять функция - просто встроенной в операторах SELECT и WHERE.

Так, что происходит? Есть ли ограничение в ODP.net при запуске sprocs внутри пакета, содержащего вызовы функций? Кажется немного странным.

Обходной путь - просто не использовать функции, но я не хочу этого делать, поскольку некоторые операторы select содержат условные выражения, которые повторяют ту же логику в запросах на основе Union.

Любая помощь или указатели высоко ценится!

Ps. для прозрачности я разместил это на форуме Oracle на прошлой неделе, но не получил никаких ответов.

Обновление: 03 августа 2016

Наконец удалось получить доступ к серверу, чтобы попытаться немного проследить. Вот что появилось в журнале трассировки, когда процесс заканчивается преждевременно:

*** 2016-08-03 10:14:39.111
*** SESSION ID:(2526.53330) 2016-08-03 10:14:39.111
*** CLIENT ID:() 2016-08-03 10:14:39.111
*** SERVICE NAME:(XXXXX) 2016-08-03 10:14:39.111
*** MODULE NAME:(iisexpress.exe) 2016-08-03 10:14:39.111
*** CLIENT DRIVER:(ODPM.NET) 2016-08-03 10:14:39.111
*** ACTION NAME:() 2016-08-03 10:14:39.111

Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x0] [PC:0x3CEBE1D, pmucfst()+13] [flags: 0x0, count: 1]
Incident 109041 created, dump file /u01/app/oracle/diag/rdbms/xxxx/XXXX/incident/incdir_109041/XXXXX_ora_13149_i109041.trc
ORA-07445: exception encountered: core dump [pmucfst()+13] [SIGSEGV] [ADDR:0x0] [PC:0x3CEBE1D] [Address not mapped to object] []

ssexhd: crashing the process...
Shadow_Core_Dump = PARTIAL

Я также вижу дамп ядра в той же папке. Я попытался найти там файлы трассировки, чтобы увидеть, есть ли что-то очевидное, но, честно говоря, сложно что-то искать, когда вы не знаете, что ищете!

Я вижу потерю дампов ядра из предыдущих попыток запуска sprocs всякий раз, когда он использовал функцию - так что это, по крайней мере, достаточно последовательно.

1 ответ

Я столкнулся с той же проблемой. Служба поддержки Oracle ответила:

Похоже, вы попали в Bug 18191823 - Hang / ORA-600 [19708] и т. Д. Ссылаясь на устаревшее связывание REFCURSOR ( Doc ID 18191823.8)

Временное решение
Убедитесь, что продолжительность связанной переменной PL/SQL по крайней мере равна продолжительности курсора ref, с которым она связана.

Исправление впервые включено в патчи июля 2016 года.

Другие вопросы по тегам