Я успешно подключился к базе данных Oracle (10g) из С# (Visual Studio 2008), загрузив и установив инструменты для администрирования клиентов и Visual Studio 2008 на своем ноутбуке.
Отладка установки для инструментов Oracle Client была более 200 МБ и довольно длинная.
Кто-нибудь знает, каков минимальный эффективный след? Я надеюсь, что это одна DLL и команда register, но мне кажется, что мне нужно установить дом oracle и установить различные переменные среды.
Я использую Oracle.DataAccess в своем коде.
Вам нужен клиент Oracle для подключения к базе данных Oracle. Самый простой способ - установить Oracle Data Access Components.
Чтобы свести к минимуму след, я предлагаю следующее:
sales-server:1521/sales.us.acme.com
.Это примерно 19Mb (v10).
Если вы не разделяете эту папку между несколькими приложениями, альтернативой будет отправка вышеупомянутых библиотек DLL вместе с вашими бинарными приложениями и пропустить шаг установки PATH.
Если вам абсолютно необходимо использовать поставщика Oracle (Oracle.DataAccess), вам понадобится:
Обратите внимание, что я не тестировал эту последнюю конфигурацию...
Начиная с 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.dll
Oracle.ManagedDataAccessDTC.dll
все вместе, колоссальный 6.4 МБ для .Net 4.0.
Oracle.ManagedDataAccess.dll
через NuGet.
Я использую метод, предложенный Pandicus выше, в Windows XP, используя ODAC 11.2.0.2.1. Эти шаги заключаются в следующем:
using Oracle.DataAccess.Client;
в свой код, и теперь вы можете использовать такие типы, как OracleConnection
, OracleCommand
и OracleDataReader
для доступа к базе данных Oracle. Подробнее см. В документации по . Нет необходимости использовать конфигурационный файл tnsnames.ora, должна быть установлена только строка подключения Этот способ позволяет вам подключаться к ODP.net с использованием 5 распространяемых файлов из oracle:
Запись в блог Chris: использование нового ODP.Net для доступа к Oracle с С# с простым развертыванием
Изменить: в случае, если каждый блог опускается, вот краткий обзор...
убедитесь, что вы получаете ВСЕ эти DLL из одного и того же дистрибутива ODP.Net/ODAC, чтобы избежать конфликтов номеров версий, и поместите их все в ту же папку, что и EXE
DevArt http://www.devart.com/, ранее CoreLab (crlab.com) поставляет клиент с чистым С# Oracle. Это единственная 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.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. Запустите эту минимальную программу С#, чтобы протестировать вашу установку:
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 очень полезным:
Примечание: команда ADO.NET обесценивает System.Data.OracleClient, поэтому для будущих проектов вы должны использовать ODP.NET
Размножение:
Установите следующие переменные среды:
- убедитесь, что в вашем PATH нет другого каталога оракула
- установите PATH, чтобы указать на ваш мгновенный клиент
- установите TNS_ADMIN, чтобы указать, где находится файл tnsnames.ora. расположенный
- установите NLS_LANG
- установите ваш ORACLE_HOME для вашего мгновенного клиента
Для меня я установил NLS_LANG в
http://download-east.oracle.com/docs/html/A95493_01/gblsupp.htm#634282
Я подтвердил, что это использовало правильное клиентское программное обеспечение, используя надстройку sqlplus для мгновенного клиента.
Для меня я установил: SET NLS_LANG = AMERICAN_AMERICA.WE8MSWIN1252
Примечание: перед внесением каких-либо изменений создайте резервную копию своего раздела реестра Oracle (если есть) и создайте резервную копию для любых переменных среды.