Какова минимальная площадь клиента, необходимая для подключения C# к базе данных Oracle?

StackOverflow https://stackoverflow.com/questions/70602

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Установка инструментов Oracle Client заняла более 200 МБ и была довольно долгой.

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

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

Это было полезно?

Решение

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

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

  • Используйте поставщика Microsoft для Oracle (System.Data.OracleClient), который поставляется с платформой.
  • Загрузите Пакет мгновенного клиента Oracle - Базовый облегченный:это 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.
  • Использовать Простое именование подключения в вашем приложении, чтобы избавиться от печально известного файла конфигурации TNSNAMES.ORA.Это выглядит так: sales-server:1521/sales.us.acme.com.

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

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

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

Вот типичный отпечаток, который вам нужно будет упаковать вместе с релизом:

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

все вместе, а колоссальный 6,4 МБ для .Net 4.0.

Я использую метод, предложенный Пандикусом выше, в 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 должны быть развернуты вместе с вашим исполняемым файлом.

Этот способ позволяет вам подключиться к 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-файл.

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

Вот обновление для Оракул 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.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», видеть этот вопрос.

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

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

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

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

Репродукция:

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

  1. убедитесь, что в вашем PATH нет другого каталога oracle
  2. установите свой ПУТЬ чтобы указать на вашего мгновенного клиента
  3. установите свой TNS_ADMIN Чтобы указать на то, где вы находитесь в файле tnsnames.ora
  4. установите свой НЛС_ЯЗЫК
  5. установите свой ORACLE_HOME вашему мгновенному клиенту

Лично я установил для NLS_LANG значение

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

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

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

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

Прочтите часто задаваемые вопросы по Oracle Instant Client здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top