System.AccessViolationException: Attempted to read or write protected memory This is often an indication that other memory is corrupt

Oracle11g+net3.5+window2008R2

很长的一个标题,翻译过来就是”尝试读取或写入受保护的内存。这通常指示其他内存已损坏“。还有下面的一段错误信息

 C#异常:

在 System.Data.Common.UnsafeNativeMethods.OCIStmtExecute(OciHandle svchp, OciHandle stmtp, OciHandle errhp, UInt32 iters, UInt32 rowoff, IntPtr snap_in, IntPtr snap_out, MODE mode)
   在 System.Data.OracleClient.TracedNativeMethods.OCIStmtExecute(OciHandle svchp, OciHandle stmtp, OciHandle errhp, Int32 iters, MODE mode)
   在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
   在 System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)
   在 System.Data.OracleClient.OracleCommand.ExecuteNonQuery()


window事件查看器:

错误应用程序名称: ***.exe,版本: 1.0.0.0,时间戳: 0x51e62a90
错误模块名称: KERNELBASE.dll,版本: 6.1.7601.17514,时间戳: 0x4ce7c78c
异常代码: 0xe0434f4d
错误偏移量: 0x000000000000a49d
错误进程 ID: 0xadc
错误应用程序启动时间: 0x01ce82b8b6b54da5
错误应用程序路径: C:\Users\Administrator\Desktop\***.exe
错误模块路径: C:\Windows\system32\KERNELBASE.dll

 


找了很多资料,国内没一个正确的说法。借博客园做一个笔记,也给以后遇到这样问题的人一个帮助。

开发人员遇到这样的问题不用紧张。这个根本不是你的问题,是oralce和微软的问题。

解决问题的方法也很简单去oracle下载ODAC安装就行了,这是微软和oracle的一个bug。

 

参考文件:

https://forums.oracle.com/message/10934546?tstart=0

https://forums.oracle.com/thread/2242362

你可能感兴趣的:(exception)