zoukankan      html  css  js  c++  java
  • 数据库 使用 Oracle11g迁移12c 问题收集

    兼容性问题

    Oracle.DataAccess.DLL 相关

    ORA-01460、System.AccessViolationException

    类似问题:access violation exception with 12c

    环境

    后端

    .Net Frameworks 版本: v4.0.30319
    Oracle.DataAccess.DLL: 4.122.1.0
    WPF
    平台:AnyCPU
    通信:WCF

    前端

    .Net Frameworks 版本: v3.0
    WPF
    平台:AnyCPU

    问题描述

    错误的出现方式不确定,并不会立马出现。

    ORA-01460: 转换请求无法实现或不合理
    在 ( Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck, Int32 isRecoverable)
       ( Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
       ( Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior)
       ( Oracle.DataAccess.Client.OracleCommand.ExecuteReader(CommandBehavior behavior)
       ( Evo.OraDAL.SQLPrp_lot.Prp_lotsGetByLotname(String lotname) Mn xxx.cs:L?330
       ( Evo.BLL.BLLSFC.GetedcparaByStepAndLotname(String lotname, String stepname, String sys_user_id, String& message) Mn xxxx.cs:L?1700 Category: General
    
    或
    
    应用程序: xxxx.exe
    Framework 版本: v4.0.30319
    说明: 由于未经处理的异常,进程终止。
    异常信息: System.AccessViolationException 在: ( Oracle.DataAccess.Client.OpsCon.Close(IntPtr ByRef, IntPtr ByRef, Oracle.DataAccess.Client.OpoConValCtx*, Oracle.DataAccess.Client.OpoConRefCtx) ( Oracle.DataAccess.Client.OpsCon.Close(IntPtr ByRef, IntPtr ByRef, Oracle.DataAccess.Client.OpoConValCtx*, Oracle.DataAccess.Client.OpoConRefCtx) ( Oracle.DataAccess.Client.ConnectionPool.CheckLifeTimeAndStatus(Oracle.DataAccess.Client.OpoConCtx ByRef, Boolean, Boolean ByRef, Int32, Boolean, Boolean) ( Oracle.DataAccess.Client.ConnectionPool.PutConnection(Oracle.DataAccess.Client.OpoConCtx ByRef, Boolean, Boolean, Boolean, Int32, Boolean, Boolean) ( Oracle.DataAccess.Client.ConnectionDispenser.Close(Oracle.DataAccess.Client.OpoConCtx ByRef, Boolean) ( Oracle.DataAccess.Client.OracleConnection.Close() ( Oracle.DataAccess.Client.OracleConnection.Dispose(Boolean) ( System.ComponentModel.Component.Dispose() ( xxxxxx.xxxxGetByid(System.String) ( xxxx.GetxxxxByid(System.String, System.String, System.String ByRef) ( xxxxx.GetxxxxByid(System.String, System.String, System.String ByRef) ( DynamicClass.SyncInvokeGetxxxxByid(System.Object, System.Object[], System.Object[]) ( System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(System.Object, System.Object[], System.Object[] ByRef) ( System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(System.ServiceModel.Dispatcher.MessageRpc ByRef) ( System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(System.ServiceModel.Dispatcher.MessageRpc ByRef) ( System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(System.ServiceModel.Dispatcher.MessageRpc ByRef) ( System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean) ( System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(System.ServiceModel.Channels.RequestContext, Boolean, System.ServiceModel.OperationContext) ( System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(System.ServiceModel.Channels.RequestContext, System.ServiceModel.OperationContext) ( System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(System.IAsyncResult) ( System.Runtime.Fx+AsyncThunk.UnhandledExceptionFrame(System.IAsyncResult) ( System.Runtime.AsyncResult.Complete(Boolean) ( System.ServiceModel.Channels.TransportDuplexSessionChannel+TryReceiveAsyncResult.OnReceive(System.IAsyncResult) ( System.Runtime.Fx+AsyncThunk.UnhandledExceptionFrame(System.IAsyncResult) ( System.Runtime.AsyncResult.Complete(Boolean) ( System.ServiceModel.Channels.SynchronizedMessageSource+ReceiveAsyncResult.OnReceiveComplete(System.Object) ( System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(System.Object) ( System.ServiceModel.Channels.TracingConnection+TracingConnectionState.ExecuteCallback() ( System.ServiceModel.Channels.SocketConnection.OnReceiveAsync(System.Object, System.Net.Sockets.SocketAsyncEventArgs) ( System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(System.Net.Sockets.SocketError, Int32, System.Net.Sockets.SocketFlags) ( System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*) ( System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*) 
    

    原因不明:在同时使用 TransactionScope 、WCF通信、CommandBehavior.CloseConnection[cmd.ExecuteReader(CommandBehavior.CloseConnection)] 就会报错
    没有解决方案,但有个绕道方案:不使用 CommandBehavior.CloseConnection;

  • 相关阅读:
    js基础:关于Boolean() 与 if
    @@cursor_rows变量解析
    SQL Prompt
    google android sdk下载hoosts
    java环境配置
    Linux grep用法整理
    bash调试执行
    Vim常见快捷键汇总
    Linux查看磁盘块大小
    Linux Bash终端快捷键小结
  • 原文地址:https://www.cnblogs.com/zxaben/p/15787082.html
Copyright © 2011-2022 走看看