Мы использовали 64-разрядный клиент Oracle 11g 64 бит для подключения к базе данных 11g. Недавно мы обновили Oracle 12c. Я удалил 11g odp-клиент на моем локальном компьютере (Windows Server 2008 R2 64 бит). Я убедился, что записи реестра удалены с regedit.exe
. После установки Oracle 12c 64 бит я могу успешно установить соединение. Но после фиксации, когда я пытаюсь закрыть соединение с помощью OracleConnection.close()
я получаюИсключение нарушения прав доступа с 12c
«AccessViolationException:. Попытка чтения или записи в защищенную память Это часто признак того, что другая память повреждена».
Я использую Visual Studio 2010 Professional как IDE. Пожалуйста, дайте мне знать , как решить эту проблему. Ниже приведен трассировки стека за исключением:
на Oracle.DataAccess.Client.OpsCon.Close (IntPtr & opsConCtx, IntPtr & opsErrCtx, OpoConValCtx * pOpoConValCtx, OpoConRefCtx pOpoConRefCtx)
на Oracle.DataAccess. Client.ConnectionPool.CheckLifeTimeAndStatus (opoConCtx & opoConCtx, булева bDistTxnActive, булева & bClosed, Int32 bFromPool, Логического bCheckLifetimeOnly, булева bFreeValCtxOnDispose, булева isPopulatePool) при Oracle.DataAccess.Client.Con nectionPool.PutConnection (OpoConCtx & opoConCtx, булева bDoNotAllocValCtx, булева bCheckStatus, булева bCheckLifeTime, Int32 bDistTxnActive, булева isPopulatePool, булева bFreeValCtxOnDispose) при Oracle.DataAccess.Client.ConnectionDispenser.Close (OpoConCtx & opoConCtx, булева isContextConnection) в Oracle.DataAccess.Client.OracleConnection.Close()
Пройдите поиск на вашей машине для oci.dll. Он является частью многих других DLL-клиентов Oracle. Если вы обнаружите, что оно удаляет/переименовывает все другие DLL-библиотеки Oracle, которые вы находите в этом месте. Возможно, некоторые старые DLL-клиенты остались в неожиданных местах и загружены и несовместимы, –