Какой минимальный размер клиентского пространства необходим для подключения C # к базе данных Oracle? - PullRequest
71 голосов
/ 16 сентября 2008

Я успешно подключился к базе данных Oracle (10g) из C # (Visual Studio 2008), загрузив и установив инструменты администрирования клиента и Visual Studio 2008 на своем ноутбуке.

Установочная площадь для инструментов Oracle Client была более 200 МБ и довольно длинна.

Кто-нибудь знает, каков минимальный осуществимый след? Я надеюсь, что это одна DLL и команда регистрации, но у меня такое чувство, что мне нужно установить домашний оракул и установить различные переменные окружения.

Я использую Oracle.DataAccess в своем коде.

Ответы [ 8 ]

69 голосов
/ 16 сентября 2008

Вам необходим клиент Oracle для подключения к базе данных Oracle. Самый простой способ - установить Компоненты доступа к данным Oracle .

Чтобы свести к минимуму площадь, я предлагаю следующее:

  • Используйте провайдера Microsoft для Oracle (System.Data.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 добавьте библиотеку CRT DLL для Visual Studio 2003 (msvcr71.dll) в эту папку, так как Oracle ребята забыли прочитать это ...
  • Добавить эту папку в переменную среды PATH.
  • Используйте метод Easy Connect Naming в своем приложении, чтобы избавиться от печально известного файла конфигурации TNSNAMES.ORA. Это выглядит так: sales-server:1521/sales.us.acme.com.

Это составляет примерно 19Mb (v10).

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

Если вам абсолютно необходимо использовать провайдера Oracle (Oracle.DataAccess), вам потребуется:

  • ODP .NET 11.1.0.6.20 (первая версия, которая предположительно работает с Instant Client).
  • Instant Client 11.1.0.6.0, очевидно.

Обратите внимание, что я не тестировал эту последнюю конфигурацию ...

16 голосов
/ 20 октября 2014

Начиная с 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 МБ для .Net 4.0.

15 голосов
/ 07 июля 2011

Я использую метод, предложенный 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 МБ), Oracle.DataAccess.dll (1 МБ). Остальные вещи могут быть удалены, и ничего не нужно устанавливать.
  3. Добавьте ссылку на Oracle.DataAccess.dll, добавьте using Oracle.DataAccess.Client; к своему коду, и теперь вы можете использовать такие типы, как OracleConnection, OracleCommand и OracleDataReader для доступа к базе данных Oracle. Подробности смотрите в документации класса . Нет необходимости использовать файл конфигурации tnsnames.ora, только правильная строка соединения .
  4. Указанные выше 4 DLL должны быть развернуты вместе с вашим исполняемым файлом.
14 голосов
/ 11 сентября 2009

Этот способ позволяет вам подключаться к ODP.net, используя 5 распространяемых файлов из Oracle:

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

Редактировать: В случае, если блог все рушится, вот краткое резюме ...

  • oci.dll
  • Oracle.DataAccess.dll
  • oraociicus11.dll
  • OraOps11w.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • OCIW32.DLL

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

8 голосов
/ 16 сентября 2008

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

5 голосов
/ 19 апреля 2014

Вот обновление для Oracle 11.2.0.4.0 . Я успешно выполнил следующую процедуру на Windows 7 , используя System.Data.OracleClient.

1. Загрузка Мгновенный клиентский пакет - Basic Lite : 32-битная Windows или 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-Bit

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

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

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);
    }
}

Окончательный совет: Если вы столкнулись с ошибкой "System.Data.OracleClient требуется клиентское программное обеспечение Oracle версии 8.1.7" , см. этот вопрос .

3 голосов
/ 16 сентября 2008

ODAC xcopy поможет вам получить около 45 МБ http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

2 голосов
/ 07 октября 2009

Я нашел этот пост на форуме Oracle очень полезным:

Как настроить Oracle Instant Client с помощью Visual Studio

Примечание: команда ADO.NET устарела System.Data.OracleClient, поэтому для будущих проектов следует использовать ODP.NET

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

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

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

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

http://download -east.oracle.com / документы / html / A95493_01 / gblsupp.htm # 634282

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

Для меня я установил: SET NLS_LANG = AMERICAN_AMERICA.WE8MSWIN1252

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

Ознакомьтесь с часто задаваемыми вопросами по Oracle Instant Client здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...