Каков минимальный объем клиента, необходимый для подключения 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 - 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) в эту папку, так как Oracle ребята забыли читать это...
  • добавьте эту папку в переменную среды PATH.
  • использовать Простое Подключение Именования метод в вашем приложении, чтобы избавиться от печально известных TNSNAMES.Файл конфигурации Ора. Выглядит это так:sales-server:1521/sales.us.acme.com.

Это составляет около 19mb в (v10).

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

Если вам абсолютно необходимо использовать Oracle provider (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 только версия

вот типичная нога печать вам нужно будет упаковать с вашим выпуском:

  1. Oracle.ManagedDataAccess.dll
  2. Oracle.ManagedDataAccessDTC.dll

все вместе целых 6.4 MB для .Net 4.0.


Я использую метод, предложенный Pandicus выше, в Windows XP, используя ODAC 11.2.0.2.1. Шаги следующие:

  1. загрузите пакет "ODAC 11.2 Release 3 (11.2.0.2.1) с развертыванием Xcopy" из oracle.com (53 МБ), и извлечь ZIP.
  2. соберите следующие библиотеки DLL: oci.dll (1 МБ), oraociei11.dll (130 МБ!), OraOps11w.dll (0.4 MB), Oracle.Доступа к данным.dll (1 МБ). Оставшийся материал можно удалить, и ничего не должно быть установленный.
  3. добавить ссылку на Oracle.Доступа к данным.dll, добавить using Oracle.DataAccess.Client; к вашему коду, и теперь вы можете использовать такие типы, как OracleConnection, OracleCommand и OracleDataReader для доступа к базе данных Oracle. Вижу документация класс для сведения. Нет необходимости использовать файл tnsnames.файл конфигурации ora, только строку подключения должен быть установлен правильно.
  4. вышеуказанные 4 DLL должны быть развернуты вместе с исполняемым файлом.

этот путь позволяет вам соединиться с ODP.net использование 5 распространяемых файлов из oracle:

запись в блоге Криса: использование нового ODP.Net для доступа к Oracle с C# с помощью простого развертывания

Edit: в случае, если блог каждый идет вниз, Вот краткое резюме...

  • oci.dll файлы
  • Oracle.Доступа к данным.dll файлы
  • oraociicus11.dll файлы
  • OraOps11w.dll
  • orannzsbb11.dll файлы
  • oraocci11.dll файлы
  • ociw32.dll файлы

убедитесь, что вы получаете все эти DLL из одного и того же ODP.Net / распространение ODAC, чтобы избежать конфликтов номеров версий и поместить их все в ту же папку, что и ваш EXE


Деварт http://www.devart.com/, ранее CoreLab (crlab.com) предоставляет клиент Oracle pure-C#. Это одна dll, и она отлично работает.


вот обновление для Oracle 11.2.0.4.0. У меня был успех со следующей процедурой на Windows 7 используя System.Data.OracleClient.

1. скачать Мгновенный Пакет Клиента-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.dll

64-бит

   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.dll

3. постройте строку соединения, которая исключает необходимость tnsnames.Ора!--6-->.

(см. примеры в тестовой программе ниже.)

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

размножение:

настройте следующие переменные среды:

  1. убедитесь, что на вашем пути нет другого каталога oracle
  2. установить ваш путь чтобы указать на мгновенный клиента
  3. задание TNS_ADMIN чтобы указать, где вы tnsnames.файл ora местонахождение
  4. задание значение nls_lang
  5. задание пути ORACLE_HOME мгновенный клиента

для меня я установил NLS_LANG в

http://download-east.oracle.com/docs/html/A95493_01/gblsupp.htm#634282

I проверено использование правильного клиентского программного обеспечения с помощью надстройки sqlplus для мгновенного клиента.

для меня, я: УСТАНОВИТЬ ЗНАЧЕНИЕ NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

Примечание: перед внесением изменений создайте резервную копию ключа реестра Оракул (при наличии) и резервные строки для любых переменных окружения.

прочитайте FAQ Oracle Instant Client здесь