2016-08-01 66 views
1

Ich bin perplex von den oben genannten, die immer wieder auftauchen, wenn ich einen gespeicherten proc in einem Paket auf unserer neuen Oracle-Installation ausführen.ODP.net - ORA-12537 End of File Fehler beim Aufruf der gespeicherten Prozedur

Die sproc aus WCF genannt, die die folgende Ausnahme zurückgibt:

<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> 

Es ist kein Muster, um es zu sein scheint entweder - manchmal funktioniert es gut, manchmal nicht.

Hier Sachen, die ich versucht habe:

  • die GAC Checked mehrere Versionen von ODP nicht vorhanden sind, um sicherzustellen. Die Komponente für den verwalteten Datenzugriff wurde aus der nuget - Version 12.1.2400 importiert.
  • Verschiedene Attribute zur Sortierung der Verbindungszeichenfolge hinzugefügt - nämlich persistent Sicherheitsinfo = True, Selbstoptimierung = True, Mindestpoolgröße = 3, Max. Poolgröße = 25, Incr Poolgröße = 3, Decr Poolgröße = 1; Timeout = 20; Pooling = false; Verbindungslebensdauer = 59; - versuchte verschiedene Konfigurationen, aber kein Glück, zum Beispiel Einstellung Pooling auf falsch/wahr etc.
  • Sicherstellung der Entsorgung von Objekten im generischen Code. Hier ist der Testcode zur Zeit verwendet:

    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(); 
        } 
    } 
    
  • die Abfrage in der gespeicherten proc Abholzen zu ‚festen‘ Werte - um sicherzustellen, dass es war nichts in der sproc das Problem verursacht. Ich habe einige interessante Probleme gefunden, die unten beschrieben sind.

So bin ich ratlos. Ich habe ODP-Tracing eingeschaltet - und habe bemerkt, dass es Probleme mit dem Pool zu haben scheint. Das erste Mal, ich habe dies:

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) 

die Verfolgung auf 127 Ramping, ich habe gerade dies:

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 |.^[email protected]| 
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 

ich die Abfrage in den sproc gezwickt durch die select-Anweisungen zu kommentieren und wo Klauseln und führte sie nach und nach ein, um festzustellen, ob es sich um die Abfrage handelt, die das Problem darstellt (die Ausführung in Oracle Developer funktioniert jedoch problemlos). Ich habe es verengt auf diese Aussage nach unten - wenn ich es wieder einführen, bekomme ich wieder das Ende der Datei Ausnahmen:

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

Dies ist, was die ISNUMERIC Funktion wie in dem Paket sieht;

Zuerst dachte ich, es könnte die Anzahl der gefangenen Ausnahmen sein, die wegen der Anzahl der Ausnahmen die weitere Ausführung verhinderten. Allerdings habe ich die Funktion vereinfacht, um nur '1' zurückzugeben, und es hat immer noch nicht funktioniert.

Die Ergebnisse der Abfrage werden über einen Ref-Cursor z.

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> 

Schließlich habe ich entfernt alle Funktionsaufrufe aus den Select-Anweisungen und die where-Klauseln - und das stoppt sofort den Fehler auftritt - ich sie mit der gleichen Logik ersetzt die Funktion laufen würde - nur inline innerhalb der SELECT und WO Aussagen.

Also, was ist los?Gibt es eine Einschränkung in ODP.net, wenn in einem Paket sprocs ausgeführt werden, die Aufrufe von Funktionen enthalten? Scheint ein bisschen seltsam.

Die Problemumgehung besteht darin, einfach keine Funktionen zu verwenden, aber ich möchte das nicht tun, da einige SELECT-Anweisungen bedingte Ausdrücke in ihnen enthalten, die die gleiche Logik in Union-basierten Abfragen wiederholen.

Jede Hilfe oder Hinweise sehr geschätzt!

Ps. Aus Gründen der Transparenz habe ich dies letzte Woche im Oracle-Forum gepostet, habe aber keine Antworten erhalten.

Update: 03-Aug-2016

es endlich geschafft, Zugriff auf den Server zu bekommen ein wenig Tracing zu versuchen. Hier ist, was im Trace-Protokoll kam, wenn der Prozess vorzeitig beendet:

*** 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 

ich auch einen Core-Dump im selben Ordner sehen. Ich habe versucht, die Bucket-Trace-Dateien darin zu gräten, um zu sehen, ob etwas offensichtlich ist - aber um ehrlich zu sein, ist es schwierig, nach etwas zu suchen, wenn Sie nicht wissen, wonach Sie suchen!

Ich kann eine Shedload von Core-Dumps von früheren Versuchen sehen, die Sprocs wann immer es eine Funktion ausgeführt hat - so ist es zumindest einigermaßen konsistent.

+0

Normalerweise füllen Sie eine DataTable aus Recursor mit DataAdapter, nicht ein DataSet. Ein DataSet kann mehrere Tabellen (z. B. mehrere DataTables) und andere enthalten. Überprüfen Sie sorgfältig die Dokumentation und halten Sie sich an die dort gegebenen Beispiele. –

+0

Holen Sie das ALERT-Protokoll auf den Datenbankserver. Wahrscheinlich ist auf der Datenbankseite ein Fehler aufgetreten, der die Verbindung zerstört. Der wirkliche Fehler wird im Warnungsprotokoll sein. –

+0

Danke @WernfriedDomscheit und ChristianShay - ich werde beide Vorschläge ausprobieren. Ich habe versucht, zum Alarmprotokoll zu gelangen, aber dba hat mir immer noch keinen Zugriff gewährt! Ich werde die Ergebnisse veröffentlichen. – PoorbandTony

Antwort

1

Ich stieß auf das gleiche Problem. Oracle Support reagierte mit:

Es sieht aus wie Sie schlagen Bug 18.191.823 - Hang/ORA-600 [19708] etc .. Referenzierung abgestanden refcursor bind (Doc-ID 18.191.823,8)

Umgehung
Sicherstellen, dass die Dauer der gebundenen PL/SQL-Variablen ist mindestens so lang wie der Ref-Cursor, an den sie gebunden ist.

Das Update wird erstmals im Juli 2016 Patches enthalten.

+0

Danke Brad - Entschuldigung für die Verzögerung bei der Antwort. Ich werde mit unseren DBAs nachsehen, ob wir jetzt repariert sind. Danke noch einmal! – PoorbandTony

+0

Kein Problem. Ich kann bestätigen, dass die Juli-Patches tatsächlich das Problem für uns behoben haben. –