Несколько экземпляров Oracle вызывают проблемы

1

Я использовал один оракул-клиент, и все было в порядке, но мне пришлось установить еще две версии Oracle. И это вызывает проблемы сейчас.

  1. Жаба начала бросать всплывающее всплывающее окно, в котором говорится "нарушение доступа по адресу в модуле oran11.dll".
  2. OracleConnection приложения ASP.NET запустило пустое исключение.

Я решил 1 путем изменения значений пути в переменных системной среды, ставя исходный путь Oracle раньше других. Но все еще борется с 2, я просмотрел DLL-загрузку Process Explorer. И это похоже на загрузку неправильных dll файлов оракула, как один из 11.2, а другой из 12.1.

Конечно, я могу попытаться исправить это, удалив все эти оракулы и переустановить только один. Но я должен держать эти 3 для разных настроек разработки.

Как я могу исправить эти проблемы пути оракула? Кто-нибудь знает?

Теги:
.net-assembly
odp.net
gac

2 ответа

2
Лучший ответ

В случае старого "неуправляемого" провайдера ODP.net состоит из управляемой части (oracle.dataaccess.dll) и неуправляемой части (почти всех других DLL в домашнем каталоге oracle). Когда файл oracle.dataaccess.dll загружен, он проходит следующий порядок поиска, чтобы найти неуправляемые DLL, которые ему нужны:

Oracle.DataAccess.dll ищет зависимые неуправляемые библиотеки DLL (такие как Oracle Client) на основе следующего порядка:

Directory of the application or executable.

DllPath setting specified by application config or web.config.

DllPath setting specified by machine.config.

DllPath setting specified by the Windows Registry.

HKEY_LOCAL_ MACHINE\Software\Oracle\ODP.NET\version\DllPath

Directories specified by the Windows PATH environment variable.

http://docs.oracle.com/html/E10927_01/InstallODP.htm

Сначала я предполагаю, что у вас есть старая версия oracle.dataaccess.dll в каталоге bin. Самое простое исправление - указать конфигурационную переменную "DllPath" и указать на старый сайт oracle для этого сайта asp.net:

<configuration>
 <oracle.dataaccess.client>
   <add key="DllPath" value="C:\app\user\product\11.1.0\your_old_client\bin"/>
   ...

Еще одна вещь, которую вы могли бы попробовать, это удалить ее - таким образом, она может загрузить "лучшую" DLL из gac (даже если версия, которую вы установили, была более новой, установщик обычно устанавливает политики издателей для перенаправления любых ссылок, по крайней мере для того же основного версия). Я говорю, что только для того, чтобы дать представление о том, как избежать ситуации в будущем. У меня есть другой ответ на этот вопрос: qaru.site/questions/6389153/...

  • 0
    Спасибо!!! Это не решило мою проблему, но было хорошей подсказкой, чтобы заглянуть в большее. Я обнаружил, что machine.config был установлен на более новую версию, поэтому попытался изменить его, он немного изменил симптом, но не смог исправить мою первоначальную проблему. Поэтому решил удалить все и переустановить тот, который мне нужен прямо сейчас.
0

Эти сборки сохраняются в GAC.

Перейдите в C:\Windows\assembly, выберите те сборки, которые хотите Uninstall щелкните правой кнопкой мыши и выберите " Uninstall. Эти сборки больше не загружаются вашей программой.

Если вам нужно переустановить их, они все еще находятся в папке Oracle, поэтому вы можете снова установить его с помощью gacutil.

  • 0
    Спасибо, но эти dll (oraons.dll, oraops12.dll и т. Д.) Загружаются с установленного ими пути с помощью QTAgent32.exe. Вот почему я подумал, что это проблема, связанная с путем. Их нет в c: \ windows \ assembly \
  • 0
    Ваша проблема с TOAD была решена, верно? Это было только из-за второй проблемы, верно? Кроме того, TOAD не использует .NET.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню