Клиент Oracle 11g подключается к базам данных 10g и 11g - PullRequest
6 голосов
/ 20 февраля 2012

Я видел несколько постов, в которых говорится, что Oracle 11g Client (для Windows) отлично работает с базами данных до 9.2.Но если клиент иногда подключается к 11g, а иногда к 10g базам данных, он все еще работает?Мой вопрос: есть ли что-то, что можно настроить по-разному при подключении к базам данных 10g и 11g?

Некоторые люди рассказывали мне о политиках в GAC.

Спасибо!

Ответы [ 2 ]

8 голосов
/ 20 февраля 2012

Обычно нет проблем с подключением к более старой базе данных Oracle с более новым драйвером клиента, например, с подключением к базе данных 10g или 11g с клиентом 12g.Остальная часть ответа относится к техническим проблемам, которые могут возникнуть в вашей .Net-программе в случае, если клиент Oracle (возможно) уже установлен на компьютере, на котором выполняется ваша программа.


Обновление 2014:

Тем временем Oracle выпустила управляемый драйвер .Net для базы данных Oracle.Таким образом, вместо установки локального клиента Oracle или доставки Instant Client вместе с вашим приложением, предпочтительным способом должна быть доставка только управляемого драйвера без каких-либо зависимостей от локальных конфигураций.Тогда у вас не будет проблем с установленными клиентами, GAC, версией базы данных Oracle и так далее.Вы можете загрузить управляемый драйвер с веб-сайта Oracle .


Предыдущий ответ, который все еще необходим, если вы не можете использовать управляемый драйвер:

Проблемы начинаются, если вы не знаете, установлен ли клиент Oracle на ваших клиентских рабочих станциях.Если вы говорите о GAC , я полагаю, вы не знаете, установлен ли клиент Oracle, и если да, то какая это версия .

Если вы не хотите полагаться наУстановленный клиент Oracle, вы можете доставить Oracle Instant Client с вашим приложением .Net.Например, вы можете загрузить ODAC 11.2 Release 4 (11.2.0.3.0) с Oracle Developer Tools для Visual Studio , который дает вам установку Oracle Client для вашей рабочей станции разработчика (с поддержкой Visual Studio для разработки DataSet иEntityFramework), а также все файлы, необходимые для мгновенного клиента.

Для мгновенного клиента вам нужны следующие файлы (найдите их во вложенных папках вашей установки ODAC):

  • oci.dll
  • ociw32.dll
  • Oracle.DataAccess.dll
  • orannzsbb11.dll
  • oraociicus11.dll (если вы используете английский язык, в противном случаесоответствующий .dll)
  • OraOpd11w.dll
  • tnsnames.ora (если вам это нужно)

Кроме того, из вашего каталога Windows необходимы следующие DLL-файлы.:

  • mfc71.dll
  • msvcr71.dll

Просто скопируйте все эти файлы в рабочий каталог вашего приложения (где находится файл .exe).).

Теперь, как это относится к GAC?

Если на клиентском компьютере установлен клиент Oracle, в GAC также есть Oracle.DataAccess.dll .Также возможно, что была установлена ​​политика, которая гласит что-то вроде: * Независимая от Oracle.DataAccess.dll , на которую ссылается ваша программа, Oracle.DataAccess.dll версия из вашего GACдолжен всегда использоваться.Если вы установили ODAC, на который я ссылался выше, вы обнаружите этот файл в

C: \ Windows \ Microsoft.NET \ assembly \ GAC_32 \ Policy.4.112.Oracle.DataAccess \ v4.0_4.112.3.0__89b483f429c47342

В результате ваше приложение .Net всегда выдает исключение, если вы пытаетесь загрузить Oracle.DataAccess.dll (с сообщением об ошибке типа «Поставщик не совместим ...»), если на клиентском компьютере установлена ​​другая версия Oracle Client 11, отличная от той, на которую вы ссылаетесь в своем приложении.

Чтобы решить эту проблему, вы можете настроить свой app.conf так, чтобы политика издателя игнорировалась ивсегда загружается ваша версия:

<configuration>
...
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" />
        <publisherPolicy apply="no" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
1 голос
/ 20 февраля 2012

У меня не было проблем с JAVA или .Net. Фактически, Oracle говорит, что это прекрасно:

Релиз включает клиент базы данных Oracle 11.2.0.3, который может доступ к базе данных Oracle 9.2 и выше. Oracle поддерживает Entity Framework и LINQ с Microsoft Visual Studio 2010 и .NET Framework 4, включая Entity Framework 4.1 и 4.2. Первый Код не поддерживается в этом выпуске.

Очевидно, что вы захотите тестировать одни и те же процессы при подключении к каждому и проверять свои собственные тесты, но я думаю, что у вас все будет хорошо.

...