Обычно нет проблем с подключением к более старой базе данных 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-файлы.:
Просто скопируйте все эти файлы в рабочий каталог вашего приложения (где находится файл .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>