Jaka jest minimalna ilość klientów wymagana do podłączenia C# do bazy danych Oracle?
Pomyślnie połączyłem się z bazą danych Oracle (10g) z C# (Visual Studio 2008), pobierając i instalując na swoim laptopie Narzędzia administracyjne klienta oraz Visual Studio 2008.
Nakład instalacji narzędzi klienckich Oracle wynosił ponad 200 MB i był dość długi.
Czy ktoś wie jakie są minimalne możliwości pracy? Mam nadzieję, że jest to pojedyncza DLL i Komenda register, ale mam wrażenie, że muszę zainstalować oracle home i ustawić różne zmienne środowiskowe.
Używam Oracle.Dostęp do danych w moim kodzie.
8 answers
Do połączenia z bazą danych Oracle potrzebny jest klient Oracle. Najprostszym sposobem jest zainstalowanie komponentów Oracle Data Access .
Aby zminimalizować ślad, proponuję:
- Użyj dostawcy Microsoft dla Oracle (System.Data.OracleClient), które statki z RAM.
- Pobierz Oracle Instant Client Package - Basic Lite: jest to plik zip z (prawie) minimum. Polecam wersję 10.2.0.4, która jest dużo mniejszy niż wersja 11.1.0.6.0.
- Rozpakuj następujące pliki w określonym folderze :
- v10 :
- oci.dll Orannzsbb10dll
- oraocicus10.dll
- v10 :
- v11 :
- oci.dll Orannzsbb11dll
- oraociei11.dll
sales-server:1521/sales.us.acme.com
.To wynosi około 19Mb (v10).
Jeśli nie zależy ci na udostępnieniu tego folderu między kilkoma aplikacjami, alternatywą byłoby wysłanie wyżej wymienionych bibliotek DLL wraz z plikami binarnymi aplikacji i pominięcie kroku ustawiania ścieżki.
Jeśli koniecznie musisz użyj dostawcy Oracle (Oracle.DataAccess), będziesz potrzebował:
- ODP. NET 11.1.0.6.20 (pierwsza wersja, która rzekomo działa z Instant Client).
- Instant Client 11.1.0.6.0, oczywiście.
Zauważ, że nie testowałem tej najnowszej konfiguracji...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-09 08:51:08
[[3]}od 2014 r. OPD.NET, sterownik zarządzany jest najmniejszym problemem.
Oto porównanie użycia kodu do nie zarządzanych wersji, które sugerowały poprzednie (nieaktualne) odpowiedzi: http://docs.oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148
Będziesz musiał pobrać te biblioteki DLL i odniesienie Oracle.ManagedDataAccess.dll
w swoim projekcie:
Pobierz ODP.NET, sterownik zarządzany tylko w wersji xcopy
Oto typowy odcisk stopy, który musisz spakować Twoje wydanie:
Oracle.ManagedDataAccess.dll
-
Oracle.ManagedDataAccessDTC.dll
Razem, 6,4 MB dla. Net 4.0.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-21 12:09:23
Używam metody sugerowanej przez Pandicus powyżej, Na Windows XP, używając ODAC 11.2.0.2.1. Kroki są następujące:
- Pobierz pakiet "ODAC 11.2 Release 3 (11.2.0.2.1) with Xcopy Deployment" z oracle.com (53 MB) i rozpakować ZIP.
- Zbierz następujące biblioteki DLL: oci.dll (1 MB), oraociei11.dll (130 MB!), OraOps11w.dll (0.4 MB), Oracle.Dostęp do danych.dll (1 MB). Pozostałe rzeczy można usunąć i nic nie trzeba instalować.
- Dodaj odniesienie do Wyrocznia.Dostęp do danych.dll, dodaj
using Oracle.DataAccess.Client;
do kodu i teraz możesz używać takich typów jakOracleConnection
,OracleCommand
iOracleDataReader
, aby uzyskać dostęp do bazy danych Oracle. Szczegóły można znaleźć w dokumentacji klasy . Nie ma potrzeby korzystania z tnsnames.plik konfiguracyjny ora, tylko łańcuch połączeń musi być ustawiony poprawnie. - powyższe 4 biblioteki DLL muszą zostać wdrożone wraz z Twoim plikiem wykonywalnym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-07 10:07:38
W ten sposób można połączyć się z ODP.net korzystanie z 5 plików redystrybucyjnych z oracle:
Edit: w przypadku, gdy blog co jakiś czas spada, oto krótkie podsumowanie...
- oci.dll
- Wyrocznia.Dostęp do danych.dll Oraocicus11dll
- OraOps11w.dll Orannzsbb11dll
- oraocci11.dll Ociw32dll
Upewnij się, że wszystkie DLL ' y pochodzą z tego samego ODP.Net / ODAC distribution, aby uniknąć konfliktów z numerami wersji i umieścić je wszystkie w tym samym folderze co twój EXE
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-25 16:05:04
DevArt http://www.devart.com / , dawniej CoreLab (crlab.com) dostarcza klienta pure-C # Oracle. To pojedyncza biblioteka dll i działa dobrze.
Oto aktualizacja dla Oracle 11.2.0.4.0. Udało mi się wykonać następującą procedurę na Windows 7 używając System.Data.OracleClient
.
1. pobierz Pakiet Instant Client-Basic Lite: Windows 32-Bit lub 64-Bit.
2. skopiuj następujące pliki do lokalizacji w ścieżce systemowej:
32-Bit
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. skonstruuj łańcuch połączeń, który pomija need for tnsnames.ora.
(zobacz przykłady w programie testowym poniżej.)
4. Uruchom ten minimalny program C#, aby przetestować instalację:
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);
}
}
Ostatnia wskazówka: Jeśli napotkasz błąd "System.Data.OracleClient wymaga oprogramowania klienckiego Oracle w wersji 8.1.7 " , zobacz to pytanie .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:09
ODAC xcopy da ci około 45MB. http://www.oracle.com/technology/software/tech/windows/odpnet/index.html
Znalazłem ten post na forum Oracle również bardzo przydatny:
Jak skonfigurować Oracle Instant Client za pomocą Visual Studio
Uwaga: ADO.NET / align = "left" / Data.OracleClient więc dla przyszłych projektów należy użyć ODP.NET
Rozmnażanie:
Ustaw następujące zmienne środowiskowe:
- upewnij się, że żaden inny katalog oracle nie znajduje się w twojej ścieżce
- Ustaw swoją ścieżkę tak, aby wskazywała na Twój moment klient
- Ustaw swój TNS_ADMIN , aby wskazać miejsce, w którym nazwałeś tnsnames.plik ora jest położony
- Ustaw swój NLS_LANG
- Ustaw swój ORACLE_HOME do swojego klienta
Dla mnie ustawiłem NLS_LANG na
Http://download-east.oracle.com/docs/html/A95493_01/gblsupp.htm#634282
Zweryfikowałem to przy użyciu odpowiedniego oprogramowania klienta, używając dodatku sqlplus do instant client.
Dla mnie ustawiłem: USTAW NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
Uwaga: przed wprowadzeniem jakichkolwiek zmian Utwórz kopię zapasową klucza rejestru Oracle (jeśli istnieje) i utwórz kopię zapasową ciągów dla dowolnych zmiennych środowiskowych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-07 03:11:54