首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-12571: TNS: ASP.NET数据包写入器失败

ORA-12571: TNS: ASP.NET数据包写入器失败
EN

Stack Overflow用户
提问于 2011-08-22 17:29:37
回答 2查看 33.3K关注 0票数 8

我的开发团队在使用Oracle3.5和4.0对抗Oracle11g时遇到了许多ORA-12571: TNS:packet writer failure错误。这些错误在何时发生是不一致的,并且是由许多应用程序生成的。此异常发生在调用随机存储过程、数据包和内联SQL语句时。Oracle 11客户端安装在web服务器上。一些应用程序使用微软System.Data.OracleClient连接到甲骨文,另一些应用程序使用甲骨文(ODP.NET)提供的.NET组件。两个数据访问对象都会产生相同的错误。

还有其他非.NET应用程序运行在不同的web服务器上,但使用相同的数据库服务器。这些应用程序没有任何这样的问题。我最初的想法是,web服务器上的Oracle客户端配置不正确。

还有其他人收到过这个错误吗?你做了什么来修复它?

代码语言:javascript
运行
复制
ORA-12571: TNS:packet writer failure

堆栈跟踪:

代码语言:javascript
运行
复制
at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
   at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
   at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
   at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
EN

回答 2

Stack Overflow用户

发布于 2012-06-13 17:26:59

另一种可能的解决方案是,您与Oracle数据库之间的防火墙认为您的连接已死,并关闭了您下面的连接。只有在尝试执行查询并获得ORA-12571错误时才会发现。

这是由于连接打开很长时间而没有活动所造成的。

解决方案是将SQLNET.EXPIRE_TIME添加到服务器上的sqlnet.ora文件,并将其设置为某个间隔(10)。这将导致连接每10分钟被点击一次,以确保它们仍然活着。

这样做的结果是防火墙将看到网络活动,而不会关闭连接。

代码语言:javascript
运行
复制
SQLNET.EXPIRE_TIME=10

ORA-12571: TNS:数据包编写失败--这是我必须解决的最困难的问题之一

票数 7
EN

Stack Overflow用户

发布于 2014-04-14 21:17:24

在安装了elmah模块并分析了异常之后,我尝试:

  1. 更改连接配置。
  2. 删除和/或更新服务器防火墙规则。
  3. 更新服务器机器上的Oracle客户端。

上面的任何选项都解决了这个问题,但我忘记了我们正在使用的过时的提供者(System.Data.OracleClient)。在我用ODP.NET (Oracle.DataAccess)的最后一个版本替换了它之后,一切都开始完美地运作起来。

基于您的异常描述,您目前正在使用过时的提供程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7151175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档