gpt4 book ai didi

stored-procedures - ODP.net托管驱动程序引发ORA-12570:网络 session :意外的数据包读取错误

转载 作者:行者123 更新时间:2023-12-03 20:57:26 61 4
gpt4 key购买 nike

在我们的一种产品中,我们使用ODP.net托管驱动程序使用存储过程从Oracle数据库检索数据。

时不时地(大约每1000个查询),我们会收到以下异常:

(ORA-12570: Network Session: Unexpected packet read error)
---> Oracle.ManagedDataAccess.Client.OracleException: ORA-12570: Network Session: Unexpected packet read error
---> OracleInternal.Network.NetworkException: ORA-12570: Network Session: Unexpected packet read error
---> System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: size
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, SocketError& errorCode)
at OracleInternal.Network.ReaderStream.ReadIt(OraBuf OB, Int32 len)
--- End of inner exception stack trace ---
at OracleInternal.Network.ReaderStream.ReadIt(OraBuf OB, Int32 len)
at OracleInternal.Network.ReaderStream.WaitForReset()
at OracleInternal.Network.OracleCommunication.Reset()
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, Int32 initialLOBFetchSize, Int64[] scnFromExecution, Boolean& bAllPureInputBinds, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause)
--- End of inner exception stack trace ---
at Oracle.ManagedDataAccess.Client.OracleException.HandleError(OracleTraceLevel level, OracleTraceTag tag, Exception ex)
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, Int32 initialLOBFetchSize, Int64[] scnFromExecution, Boolean& bAllPureInputBinds, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause)
at OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteNonQuery(String commandText, OracleParameterCollection paramColl, CommandType commandType, OracleConnectionImpl connectionImpl, Int32 longFetchSize, Int32 lobPrefetchSize, OracleDependencyImpl orclDependencyImpl, Int64[]& scnFromExecution, OracleParameterCollection& bindByPositionParamColl, Boolean& bBindParamPresent, Boolean isFromEF)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()


似乎ODP.net正在使用无效的大小参数(<= 0或大于缓冲区的长度减去offset参数的值)调用 System.Net.Sockets.Socket.Receive

异常不能手动重现,并且在执行具有不同参数的不同过程(即随机)时绝不会引发该异常。

组态:
ODP.net托管驱动程序版本:4.121.1.0
.net Framework 4.5
Oracle服务器版本:Oracle数据库11g企业版11.2.0.4.0版(Linux)

有没有人遇到过这个问题?是否有可用的修复程序?

提前致谢!

最佳答案

在Oracle支持下打开了票证之后,他们发送了ODP.net库的非官方更新版本,该版本似乎可以解决此问题。

希望此修复程序应该成为下一个ODAC版本的一部分(今天提供的最新日期为2015年10月)。

如果您在应用程序中看到此错误,则可能是由于托管ODP.net库中的同一错误,而不是您使用它的方式引起的。

要考虑的另一件事是,如this SO answer中所述,在执行长请求期间,网络基础结构中的某些内容是否会中断空闲的tcp / ip连接。

关于stored-procedures - ODP.net托管驱动程序引发ORA-12570:网络 session :意外的数据包读取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27122395/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com