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.

Author: Jonathan, 2008-09-16

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
  • v11 :
    • oci.dll
    • Orannzsbb11dll
  • oraociei11.dll
  • na platformie x86 dodaj bibliotekę DLL CRT dla Visual Studio 2003 (msvcr71.dll) do tego folderu, ponieważ chłopaki Oracle zapomnieli przeczytać to ...
  • Dodaj ten folder do ścieżki zmienna środowiskowa.
  • użyj metody Easy Connect Naming w swojej aplikacji, aby pozbyć się niesławnych nazw TNSNAMES.Plik konfiguracyjny ORA. Wygląda to tak: 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...

     69
    Author: Mac,
    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:

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

    Razem, 6,4 MB dla. Net 4.0.

     16
    Author: ecoe,
    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:

    1. Pobierz pakiet "ODAC 11.2 Release 3 (11.2.0.2.1) with Xcopy Deployment" z oracle.com (53 MB) i rozpakować ZIP.
    2. 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ć.
    3. 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 jak OracleConnection, OracleCommand i OracleDataReader, 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.
    4. powyższe 4 biblioteki DLL muszą zostać wdrożone wraz z Twoim plikiem wykonywalnym.
     15
    Author: kol,
    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:

    Wpis na blogu Chrisa: Korzystanie z nowego ODP.Net aby uzyskać dostęp do Oracle z C# z prostym wdrożeniem

    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

     14
    Author: Fidel,
    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.

     8
    Author: ,
    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
    2008-09-16 09:34:16

    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 .

     5
    Author: DavidRR,
    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
     3
    Author: ,
    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
    2008-09-16 09:27:23

    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:

    1. upewnij się, że żaden inny katalog oracle nie znajduje się w twojej ścieżce
    2. Ustaw swoją ścieżkę tak, aby wskazywała na Twój moment klient
    3. Ustaw swój TNS_ADMIN , aby wskazać miejsce, w którym nazwałeś tnsnames.plik ora jest położony
    4. Ustaw swój NLS_LANG
    5. 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.

    Przeczytaj FAQ Oracle Instant Client tutaj

     2
    Author: Vincent De Smet,
    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