Nice programing

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

nicepro 2020. 10. 29. 19:56
반응형

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


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

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

최소 작업 가능 공간이 무엇인지 아는 사람이 있습니까? 단일 DLL과 등록 명령이기를 바라고 있지만 오라클 홈을 설치하고 다양한 환경 변수를 설정해야한다는 느낌이 듭니다.

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


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

발자국을 최소화하기 위해 다음을 제안합니다.

  • 프레임 워크와 함께 제공되는 Oracle 용 Microsoft 공급자 (System.Data.OracleClient)를 사용합니다.
  • Oracle Instant Client Package -Basic Lite를 다운로드하십시오 . 이것은 (거의) 최소값을 가진 zip 파일입니다. 버전 11.1.0.6.0보다 훨씬 작은 버전 10.2.0.4를 권장합니다.
  • 특정 폴더에서 다음 파일의 압축을 풉니 다.
    • v10 :
      • oci.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11 :
      • oci.dll
      • orannzsbb11.dll
      • oraociei11.dll
  • x86 플랫폼에서 Oracle 사용자가 읽는 것을 잊었으므로 Visual Studio 2003 용 CRT DLL (msvcr71.dll)을이 폴더에 추가 합니다 .
  • 이 폴더를 PATH 환경 변수에 추가하십시오.
  • 애플리케이션에서 Easy Connect Naming 방법을 사용하여 악명 높은 TNSNAMES.ORA 구성 파일을 제거하십시오. 다음과 같이 보입니다 : sales-server:1521/sales.us.acme.com.

이는 약 19Mb (v10)입니다.

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

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

  • ODP .NET 11.1.0.6.20 (Instant Client와 함께 작동하는 것으로 알려진 첫 번째 버전).
  • Instant Client 11.1.0.6.0, 당연합니다.

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


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

다음은 이전 (오래된) 답변이 제안한 관리되지 않는 버전과의 코드 사용 비교입니다. http://docs.oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148

Oracle.ManagedDataAccess.dll프로젝트에서 다음 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 Release 3 (11.2.0.2.1) with Xcopy Deployment"패키지를 다운로드하고 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그리고 OracleDataReaderOracle 데이터베이스에 액세스 할 수 있습니다. 자세한 내용은 클래스 문서 를 참조하십시오. 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와 동일한 폴더에 넣으십시오.


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


다음은 Oracle 11.2.0.4.0에 대한 업데이트입니다 . .NET을 사용하여 Windows 7 에서 다음 절차를 성공적으로 수행했습니다 System.Data.OracleClient.

1. 인스턴트 클라이언트 패키지 다운로드 -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. 이 최소 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을 사용해야합니다.

생식:

Setup the following environment variables:

  1. make sure no other oracle directory is in your PATH
  2. set your PATH to point to your instant client
  3. set your TNS_ADMIN to point to where you tnsnames.ora file is located
  4. set your NLS_LANG
  5. set your ORACLE_HOME to your instant client

For me, I set NLS_LANG to

http://download-east.oracle.com/docs/html/A95493_01/gblsupp.htm#634282

I verified this was using the correct client software by using the sqlplus add-on to the instant client.

For me, I set: SET NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

Note: before you make any changes, back up your Oracle registry key (if exist) and backup the string for any environment variables.

Read the Oracle Instant Client FAQ here

참고URL : https://stackoverflow.com/questions/70602/what-is-the-minimum-client-footprint-required-to-connect-c-sharp-to-an-oracle-da

반응형