Какой минимальный объем клиентских ресурсов требуется для подключения C# к базе данных Oracle?
Я успешно подключился к базе данных Oracle (10g) из C# (Visual Studio 2008), загрузив и установив средства администрирования клиента и Visual Studio 2008 на своем ноутбуке.
установочный объем для клиентских инструментов Oracle был более 200 мб и довольно долго наматывался.
кто-нибудь знает, что такое минимальный рабочий след? Я надеюсь, что это одна DLL и команда register, но у меня есть ощущение, что мне нужно установить oracle home, и установите различные переменные среды.
Я использую Oracle.DataAccess в моем коде.
8 ответов:
для подключения к базе данных Oracle требуется клиент Oracle. Самый простой способ-установить Компоненты Доступа К Данным Oracle.
чтобы минимизировать след, я предлагаю следующее:
- используйте поставщик Microsoft для Oracle (System.Данные.OracleClient), который поставляется с каркасом.
- скачать Oracle Instant Client Package - Basic Lite: это zip-файл с (почти) голым минимумом. Я рекомендую версия 10.2.0.4, которая намного меньше, чем версия 11.1.0.6.0.
- распакуйте файлы в отдельную папку :
- v10 :
- oci.dll
- orannzsbb10.dll
- oraociicus10.dll
- v11 :
- oci.dll
- orannzsbb11.dll
- oraociei11.dll
- на платформе x86 добавьте библиотеку DLL CRT для Visual Studio 2003 (msvcr71.dll) в эту папку, как Оракул ребята забыли читать это...
- добавьте эту папку в переменную среды PATH.
- использовать Простое Подключение Именования метод в вашем приложении, чтобы избавиться от печально известных TNSNAMES.Конфигурационный файл ORA. Выглядит это так:
sales-server:1521/sales.us.acme.com.Это составляет около 19 МБ (v10).
Если вы не заботитесь о совместном использовании этой папки между несколькими приложения, альтернативой было бы отправить вышеупомянутые DLL вместе с вашими двоичными файлами приложений и пропустить шаг настройки пути.
Если вам абсолютно необходимо использовать поставщик Oracle (Oracle.DataAccess), вам понадобится:
- ODP .NET 11.1.0.6.20 (первая версия, которая якобы работает с Instant Client).
- мгновенный клиент 11.1.0.6.0, очевидно.
обратите внимание, что я не проверял этот последний конфигурация...
по состоянию на 2014 год, OPD.NET, управляемый водитель самый малый след ноги.
вот сравнение использования кода с неуправляемыми версиями, которые предлагали предыдущие (устаревшие) ответы: http://docs.oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148
вам нужно будет скачать эти DLL и ссылки
Oracle.ManagedDataAccess.dllв вашем проекте: СкачатьODP.NET, управляемый драйвер Xcopy версия тольковот типичная нога печать вам нужно будет упаковать с вашим релизом:
Oracle.ManagedDataAccess.dllOracle.ManagedDataAccessDTC.dllвсе вместе целых 6.4 МБ для .Net 4.0.
Я использую метод, предложенный Pandicus выше, в Windows XP, используя ODAC 11.2.0.2.1. Шаги заключаются в следующем:
- загрузите пакет "ODAC 11.2 Release 3 (11.2.0.2.1) с развертыванием Xcopy" из oracle.com (53 МБ), и извлечь ZIP.
- соберите следующие библиотеки DLL: oci.dll (1 MB), oraociei11.dll (130 MB!), OraOps11w.dll (0.4 MB), Oracle.Доступа к данным.dll (1 MB). Остальные вещи можно удалить, и ничего не надо установленный.
- добавить ссылку на Oracle.Доступа к данным.dll, добавить
using Oracle.DataAccess.Client;для вашего кода и теперь вы можете использовать такие типы, какOracleConnection,OracleCommandиOracleDataReaderдля доступа к базе данных Oracle. Смотрите документация класс для сведения. Нет необходимости использовать файл tnsnames.файл конфигурации ora, только строку подключения должна быть установлена правильно.- вышеуказанные 4 DLL должны быть развернуты вместе с исполняемым файлом.
этот путь позволяет вам соединиться с ODP.net использование 5 распространяемых файлов из oracle:
Edit: в случае, если блог каждый идет вниз, Вот краткое резюме...
- oci.dll
- Оракул.Доступа к данным.dll
- oraociicus11.dll
- OraOps11w.dll
- orannzsbb11.dll
- oraocci11.dll
- ociw32.dll
убедитесь, что вы получаете все эти DLL из одного и того же ODP.Net / распределение ODAC, чтобы избежать конфликтов номеров версий, и поместите их все в ту же папку, что и ваш EXE
DevArt http://www.devart.com/, ранее CoreLab (crlab.com) предоставляет клиент Oracle pure-C#. Это одна dll, и она отлично работает.
вот обновление для Oracle 11.2.0.4.0. Я имел успех со следующей процедурой на Windows 7 используя
System.Data.OracleClient.1. скачать Instant Client Package-Basic Lite:Windows 32-Бит или 64-бит.
2. скопируйте следующие файлы в вашей системе путь:
32-бит
1,036,288 2013-10-11 oci.dll 348,160 2013-10-11 ociw32.dll 1,290,240 2013-09-21 orannzsbb11.dll 562,688 2013-10-11 oraocci11.dll 36,286,464 2013-10-11 oraociicus11.dll64-бит
691,712 2013-10-09 oci.dll 482,304 2013-10-09 ociw32.dll 1,603,072 2013-09-10 orannzsbb11.dll 1,235,456 2013-10-09 oraocci11.dll 45,935,104 2013-10-09 oraociicus11.dll3. построить строку подключения, что исключает необходимость tnsnames.Ора.
(см. примеры в тестовой программе ниже.)
4. запустите эту минимальную программу C#, чтобы проверить вашу установку:
using System; using System.Data; using System.Data.OracleClient; class TestOracleInstantClient { static public void Main(string[] args) { const string host = "yourhost.yourdomain.com"; const string serviceName = "yourservice.yourdomain.com"; const string userId = "foo"; const string password = "bar"; var conn = new OracleConnection(); // Construct a connection string using Method 1 or 2. conn.ConnectionString = GetConnectionStringMethod1(host, serviceName, userId, password); try { conn.Open(); Console.WriteLine("Connection succeeded."); // Do something with the connection. conn.Close(); } catch (Exception e) { Console.WriteLine("Connection failed: " + e.Message); } } static private string GetConnectionStringMethod1( string host, string serviceName, string userId, string password ) { string format = "SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" + "(HOST={0})(PORT=1521))" + "(CONNECT_DATA=(SERVER=DEDICATED)" + "(SERVICE_NAME={1})));" + "uid={2};" + "pwd={3};"; // assumes port is 1521 (the default) return String.Format(format, host, serviceName, userId, password); } static private string GetConnectionStringMethod2( string host, string serviceName, string userId, string password ) { string format = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" + "(HOST={0})(PORT=1521))" + "(CONNECT_DATA=(SERVER=DEDICATED)" + "(SERVICE_NAME={1})));" + "User Id={2};" + "Password={3};"; // assumes port is 1521 (the default) return String.Format(format, host, serviceName, userId, password); } }последний совет: если вы столкнулись с ошибкой система".Данные.OracleClient требуется клиентское программное обеспечение Oracle версии 8.1.7" см. этот вопрос.
ODAC xcopy поможет вам получить около 45 МБ. http://www.oracle.com/technology/software/tech/windows/odpnet/index.html
Я нашел этот пост на форуме Oracle очень полезным, а также:
как настроить Oracle Instant Client с помощью Visual Studio
Примечание: ADO.NET команда является устаревшей системой.Данные.OracleClient поэтому для будущих проектов вы должны использовать ODP.NET
размножение:
установите следующие переменные среды:
- убедитесь, что на вашем пути нет другого каталога oracle
- set ваш путь чтобы указать на ваш мгновенный клиент
- задание TNS_ADMIN чтобы указать, где вы tnsnames.Ora файл находится
- задание значение nls_lang
- задание пути ORACLE_HOME для вашего мгновенного клиента
для меня я установил NLS_LANG в
http://download-east.oracle.com/docs/html/A95493_01/gblsupp.htm#634282
I проверено, что это было с помощью правильного клиентского программного обеспечения с помощью надстройки sqlplus для мгновенного клиента.
для меня, я: УСТАНОВИТЕ NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
Примечание: прежде чем вносить какие-либо изменения, создайте резервную копию раздела реестра Oracle (если он существует) и создайте резервную копию строки для любых переменных среды.
Comments