it-swarm-ko.tech

C #을 Oracle 데이터베이스에 연결하는 데 필요한 최소 클라이언트 공간은 무엇입니까?

랩톱에 클라이언트 관리 도구와 Visual Studio 2008을 다운로드하여 설치하여 C # (Visual Studio 2008)에서 Oracle 데이터베이스 (10g)에 성공적으로 연결했습니다.

Oracle Client 툴의 설치 공간은 200Mb 이상이었으며 상당히 오래 지속되었습니다.

누구든지 최소 ​​작업 공간이 무엇인지 알고 있습니까? 단일 DLL 및 레지스터 명령)이지만 Oracle 홈을 설치하고 다양한 환경 변수를 설정해야한다고 생각합니다.

내 코드에서 Oracle.DataAccess를 사용하고 있습니다.

71
Jonathan

Oracle 데이터베이스에 연결하려면 Oracle 클라이언트가 필요합니다. 가장 쉬운 방법은 Oracle Data Access Components 를 설치하는 것입니다.

발자국을 최소화하려면 다음을 제안합니다.

  • 프레임 워크와 함께 제공되는 Oracle 용 Microsoft 공급자 (System.Data.OracleClient)를 사용하십시오.
  • Oracle Instant Client 패키지를 다운로드하십시오 -기본 라이트 :이 파일은 최소한의 압축 파일입니다. 버전 11.1.0.6.0보다 훨씬 작은 버전 10.2.0.4를 권장합니다.
  • 특정 폴더에서 다음 파일의 압축을 풉니 다.
    • v10 :
      • oci.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11 :
      • oci.dll
      • orannzsbb11.dll
      • oraociei11.dll
  • X86 플랫폼에서 Visual Studio 2003 용 CRT DLL (msvcr71.dll)를이 폴더에 추가합니다. Oracle guys는 read this ...
  • 이 폴더를 PATH 환경 변수에 추가하십시오.
  • 악명 높은 TNSNAMES.ORA 구성 파일을 제거하려면 응용 프로그램에서 Easy Connect Naming 메서드를 사용하십시오. 다음과 같습니다 : sales-server:1521/sales.us.acme.com.

이것은 약 19Mb (v10)입니다.

여러 응용 프로그램간에이 폴더를 공유하지 않아도되는 경우 위에 언급 된 DLL을 응용 프로그램 바이너리와 함께 제공하고 PATH 설정 단계를 건너 뛸 수 있습니다.

Oracle 공급자 (Oracle.DataAccess)를 반드시 사용해야하는 경우 다음이 필요합니다.

  • ODP .NET 11.1.0.6.20 (Instant Client에서 작동하는 것으로 알려진 첫 번째 버전).
  • 인스턴트 클라이언트 11.1.0.6.0.

이 최신 구성을 테스트하지 않았습니다 ...

69
Mac

2014 년 현재 OPD.NET 관리 드라이버는 가장 작은 설치 공간입니다.

다음은 이전 (오래된) 답변에서 제안한 비 관리 버전에 대한 코드 사용법 비교입니다. http://docs.Oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148

이 dll을 다운로드하고 Oracle.ManagedDataAccess.dll 프로젝트에서 : ODP.NET, Managed Driver Xcopy 버전 만 해당

다음은 릴리스와 함께 패키지해야하는 일반적인 풋 프린트입니다.

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

모두 함께 .Net 4.0의 경우 whopping 6.4MB입니다.

16
ecoe

Windows XP에서 ODAC 11.2.0.2.1을 사용하여 위의 Pandicus에서 제안한 방법을 사용합니다. 단계는 다음과 같습니다.

  1. Oracle.com (53MB)에서 "Xcopy Deployment가 포함 된 ODA 11.2 릴리스 3 (11.2.0.2.1)"패키지를 다운로드하고 Zip을 추출하십시오.
  2. Oci.dll (1MB), oraociei11.dll (130MB!), OraOps11w.dll (0.4MB), Oracle.DataAccess.dll (1MB) DLL을 수집하십시오. 나머지 내용은 삭제할 수 있으며 설치할 필요가 없습니다.
  3. Oracle.DataAccess.dll에 대한 참조를 추가하고 using Oracle.DataAccess.Client;를 코드에 추가하면 이제 OracleConnection, OracleCommandOracleDataReader와 같은 유형을 사용하여 Oracle 데이터베이스에 액세스 할 수 있습니다. 자세한 내용은 class documentation 을 참조하십시오. tnsnames.ora 구성 파일을 사용할 필요가 없으며 connection string 만 올바르게 설정해야합니다.
  4. 위의 4 개의 DLL은 실행 파일과 함께 배포해야합니다.
15
kol

이 방법으로 Oracle에서 재배포 가능한 5 개의 파일을 사용하여 ODP.net에 연결할 수 있습니다.

Chris의 블로그 항목 : 새로운 ODP.Net을 사용하여 간단한 배포로 C #에서 Oracle에 액세스

편집 : 블로그가 모두 중단되는 경우 간단한 요약은 다음과 같습니다.

  • oci.dll
  • Oracle.DataAccess.dll
  • oraociicus11.dll
  • OraOps11w.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • ociw32.dll

버전 번호 충돌을 피하기 위해 동일한 ODP.Net/ODAC 배포에서 모든 DLL을 가져 와서 EXE와 동일한 폴더에 배치하십시오.

14
Fidel

DevArt http://www.devart.com/ , 이전에 CoreLab (crlab.com)은 순수한 C # Oracle 클라이언트를 제공합니다. 단일 dll이며 정상적으로 작동합니다.

8
Thomas Boesen

다음은 Oracle 11.2.0.4.에 대한 업데이트입니다. System.Data.OracleClient를 사용하여 Windows 7에서 다음 절차에 성공했습니다.

1. 다운로드 Instant Client Package-Basic Lite : Windows 32-Bit 또는 64-Bit .

2. 다음 파일을 시스템 경로의 한 위치에 복사하십시오.

2 비트

 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

.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"이 필요합니다, 이 질문 을 참조하십시오.

5
DavidRR
3
smo

Oracle 포럼 에서이 게시물을 매우 유용하게 발견했습니다.

Visual Studio로 Oracle Instant Client를 설정하는 방법

비고 : ADO.NET 팀은 System.Data.OracleClient를 더 이상 사용하지 않으므로 향후 프로젝트에는 ODP.NET을 사용해야합니다.

생식:

다음 환경 변수를 설정하십시오.

  1. pATH에 다른 Oracle 디렉토리가 없는지 확인하십시오.
  2. 인스턴트 클라이언트를 가리 키도록 [~ # ~] path [~ # ~] 설정
  3. tnsnames.ora 파일이있는 위치를 가리 키도록 TNS_ADMIN 을 설정하십시오.
  4. NLS_LANG 을 설정하십시오.
  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 읽기 FAQ here

2
Vincent De Smet