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

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

  •  09-06-2019
  •  | 
  •  

문제

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

Oracle 클라이언트 도구의 설치 공간은 200Mb가 넘었고 꽤 오랜 시간이 걸렸습니다.

최소 작업 가능 공간이 얼마인지 아는 사람이 있나요?단일 DLL과 레지스터 명령이기를 바라고 있지만 오라클 홈을 설치하고 다양한 환경 변수를 설정해야 한다는 느낌이 듭니다.

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

도움이 되었습니까?

해결책

Oracle 데이터베이스에 연결하려면 Oracle 클라이언트가 필요합니다.가장 쉬운 방법은 설치하는 것입니다. Oracle 데이터 액세스 구성 요소.

설치 공간을 최소화하려면 다음을 제안합니다.

  • 프레임워크와 함께 제공되는 Oracle용 Microsoft 공급자(System.Data.OracleClient)를 사용합니다.
  • 다운로드 Oracle 인스턴트 클라이언트 패키지 - 기본 라이트 :이것은 (거의) 최소한의 압축 파일입니다.버전 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 직원이 잊어버렸기 때문입니다. 이것을 읽어보세요...
  • 이 폴더를 PATH 환경 변수에 추가합니다.
  • 사용 간편한 연결 이름 지정 악명 높은 TNSNAMES.ORA 구성 파일을 제거하려면 애플리케이션에서 메서드를 사용하세요.다음과 같습니다. sales-server:1521/sales.us.acme.com.

이는 대략 19Mb (v10).

여러 응용 프로그램 간에 이 폴더를 공유하는 것에 관심이 없다면 대안은 위에서 언급한 DLL을 응용 프로그램 바이너리와 함께 제공하고 PATH 설정 단계를 건너뛰는 것입니다.

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

  • ODP .NET 11.1.0.6.20(인스턴트 클라이언트와 함께 작동하는 첫 번째 버전).
  • 당연히 인스턴트 클라이언트 11.1.0.6.0입니다.

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

다른 팁

2014년 현재 OPD.NET, Managed Driver는 설치 공간이 가장 작습니다.

다음은 이전(오래된) 답변에서 제안한 비관리 버전과의 코드 사용 비교입니다.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의 경우 6.4MB.

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

  1. oracle.com(53MB)에서 "ODAC 11.2 릴리스 3(11.2.0.2.1) with Xcopy 배포" 패키지를 다운로드하고 ZIP을 추출합니다.
  2. 다음 DLL을 수집합니다.oci.dll(1MB), oraociei11.dll(130MB!), OraOps11w.dll(0.4MB), Oracle.DataAccess.dll(1MB).나머지 항목은 삭제할 수 있으며 아무것도 설치할 필요가 없습니다.
  3. Oracle.DataAccess.dll에 대한 참조를 추가하고 using Oracle.DataAccess.Client; 코드에 추가하면 이제 다음과 같은 유형을 사용할 수 있습니다. OracleConnection, OracleCommand 그리고 OracleDataReader Oracle 데이터베이스에 액세스합니다.참조 수업 문서 자세한 내용은.tnsnames.ora 구성 파일을 사용할 필요는 없습니다. 연결 문자열 올바르게 설정해야 합니다.
  4. 위의 4개 DLL은 실행 파일과 함께 배포되어야 합니다.

이 방법을 사용하면 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와 동일한 폴더에 넣으십시오.

데브아트 http://www.devart.com/, 이전 CoreLab(crlab.com)은 순수 C# Oracle 클라이언트를 제공합니다.그것은 단일 DLL이고 잘 작동합니다.

다음은 업데이트입니다. 오라클 11.2.0.4.0.나는 다음 절차에 성공했습니다 윈도우 7 사용하여 System.Data.OracleClient.

1. 다운로드 인스턴트 클라이언트 패키지 - 기본 라이트: 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를 사용하면 약 45MB를 얻을 수 있습니다.http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

Oracle 포럼의 이 게시물도 매우 유용하다고 생각합니다.

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

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

생식:

다음 환경 변수를 설정합니다.

  1. PATH에 다른 oracle 디렉토리가 없는지 확인하십시오
  2. 당신의 설정 인스턴트 클라이언트를 가리키려면
  3. 당신의 설정 TNS_ADMIN tnsnames.ora 파일이있는 위치를 가리 킵니다
  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를 읽어보세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top