gpt4 book ai didi

c# - 尝试使用 ODP.NET 在 Oracle 11g 中读取或写入 protected 内存

转载 作者:可可西里 更新时间:2023-11-01 08:42:40 30 4
gpt4 key购买 nike

我正在开发一个应该长时间运行并通过 ODP.NET 广泛使用 Oracle (11g) 数据库的应用程序。

不过,偶尔(每 2 或 3 天)ODP.NET 会抛出 System.AccessViolationException,然后需要重新启动应用程序。这是我的堆栈跟踪:

Unhandled exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. 
---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at Oracle.DataAccess.Client.OpsSql.Prepare2(IntPtr opsConCtx, IntPtr& opsErrCtx, IntPtr& opsSqlCtx, IntPtr& opsDacCtx, OpoSqlValCtx*& pOpoSqlValCtx, string pCommandText, IntPtr& pUTF8CommandText, OpoMetValCtx*& pOpoMetValCtx, Int32 prmCnt)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonquery()

堆栈跟踪的其余部分有时会有所不同,指的是来 self 的应用程序的内部调用。

现在,我在这里提问之前进行了大量研究,但没有发现任何结论。许多其他人显然遇到了同样的问题,尽管根本原因似乎有很大差异。我真的希望有人对此有解决方案:-)

在一个不相关的说明中,似乎这个异常能够忽略我的 catch {} block 并导致每次发生时应用程序崩溃。那是因为它与内存损坏问题有关吗?

问候,安德里亚

编辑:进一步的调查使我相信启动“分布式事务协调器”服务并查看是否停止抛出异常可能是值得的。你怎么看?

最佳答案

这是一个错误。 11.1 和 11.2 提供商有这个问题。解决此问题的唯一方法是安装 11.2.0.2 客户端,然后应用补丁 6。

关于c# - 尝试使用 ODP.NET 在 Oracle 11g 中读取或写入 protected 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6550209/

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