programing

전체 구성 요소를 사용자에게 설치하지 않고 ODAC를 사용하는 .NET 응용 프로그램을 배포하려면 어떻게 해야 합니까?

javajsp 2023. 6. 13. 22:00

전체 구성 요소를 사용자에게 설치하지 않고 ODAC를 사용하는 .NET 응용 프로그램을 배포하려면 어떻게 해야 합니까?

Oracle 10g 데이터베이스에 연결되는 C# 애플리케이션을 작성했습니다.Oracle Data Access Component 11.2 "ODAC"를 사용하면 시스템에서 완벽하게 작동합니다.

이제 애플리케이션을 배포하고 .NET Framework만 있는 다른 "깨끗한 기계"에 설치하려고 합니다!그리고 ODAC 구성 요소 전체를 사용자에게 설치하고 싶지 않습니다!

내가 어떻게 그럴 수 있을까?다음과 같은 모든 필요한 DLL 파일을 bin 폴더에 포함하려고 했습니다.

  • oci.slots
  • ociw32.1987
  • Oracle.DataAccess.dll
  • orannzsbb11.1987
  • oraocci11.1987
  • oraociicus 11.179
  • 오라옵스11w.dll
  • msvcr71.1987

하지만 여전히 효과가 없었습니다.이 문제를 해결하려면 어떻게 해야 합니까?

Oracle 클라이언트를 별도로 설치할 필요가 없습니다..exe와 동일한 디렉터리에 다음을 설치했습니다.

   Oracle.DataAccess.dll

   oci.dll 

   OraOps11w.dll

   oraociei11.dll

   msvcr71.dll 

프로젝트에서 동일한 Oracle을 참조하는지 확인합니다.제공 중인 DataAccess.dll.Oracle 클라이언트가 설치되지 않은 새로운 PC에서 작동했습니다.

이와 같은 연결 문자열을 지정하여 TNSNAMES.ora 사용을 피했습니다.

연결 문자열 = 데이터 원본 ="(DESCRIPTION=(ADDRESS=(PROTOCOL=DICATION)(HOST=)(PORT=)" + "(CONNECT_DATA=(SERVER = DEDITED)(SERVICE_NAME = )"

TNSNAMES.ora를 사용하는 경우 연결 세부 정보를 잘라내어 한 줄 문자열에 붙여넣기만 하면 됩니다.

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

자세한 정보는.

  • ejm

위의 dll을 얻는 방법에 대한 자세한 내용은 다음 튜토리얼을 참조하십시오. http://begeeben.wordpress.com/2012/08/01/accessing-oracle-database-without-installing-oracle-client/

이 질문이 게시되었으므로 Oracle Managed Client를 사용할 수 있습니다(Oracle에서 제공).저는 그것을 문제없이 사용하고 있습니다.DLL 또는 특수 구성에 대한 검색이 필요하지 않습니다.패키지를 추가하고 구성 파일을 수정하기만 하면 됩니다.NuGet Link 및 에 대한 Oracle의 기사.

이 클라이언트는 전적으로 .NET Managed 코드로 작성되므로 아키텍처에 독립적이며 외부 DLL이나 Oracle Client 설치 등이 필요하지 않습니다.

패키지 관리자를 사용하여 VS에 설치할 수 있습니다.

Install-Package Oracle.ManagedDataAccess

저는 이것을 machine.config 파일에 넣는 것을 택했습니다(web.config 또는 app.config에서도 작동합니다).이렇게 하면 설치될 수 있는 다른 드라이버와의 충돌을 방지할 수 있습니다.

<configuration>
    <system.data>
        <DbProviderFactories>
          <remove invariant="Oracle.DataAccess.Client" />
          <remove invariant="Oracle.ManagedDataAccess.Client" />
          <add name="ODP.NET, Managed Driver"
               invariant="Oracle.ManagedDataAccess.Client"
               description="Oracle Data Provider for .NET, Managed Driver"
               type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        </DbProviderFactories>
      </system.data>
<configuration>

그런 다음 연결 문자열에 대해:

 <add name="MyConnectionString" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=IPORNAMEOFHOST)(PORT=PORTNUM)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORACLESID)));User Id=ORACLEUSER;Password=ORACLEPASSWORD;" providerName="Oracle.ManagedDataAccess.Client"/>
  • IPORNAME OF HOST= 서버의 IP 주소 또는 DNS 이름입니다.
  • PORTNUM= Oracle이 수신 대기 중인 포트 번호입니다.일반적으로 1521입니다.
  • ORACLESID= 연결하려는 데이터베이스의 SID입니다.
  • ORACLEUSER= 연결에 사용할 사용자 이름입니다.
  • ORACLE PASSWORD= 연결에 사용할 암호입니다.

50MB ODAC 설치 외에도 Oracle 클라이언트를 설치해야 하는지 아니면 독립 실행형 ODAC만 설치해야 하는지 잘 모르겠습니다.

Oracle 클라이언트와 ODAC를 설치해야 하는 경우 Oracle Instant Client를 사용할 수 있습니까?이는 Oracle 클라이언트를 설치하기 위한 최소 설치 공간 방법입니다.또한 ODAC xcopy 부록이 필요합니다.

ODAC 설치에만 관심이 있다면 더 작은 설치 공간은 없다고 생각합니다.

NET Framework net462, net463, net471, net472, net48의 경우 nuget 패키지를 사용합니다.오라클.Managed Data Access Inc# 프로젝트에서 다음 행을 추가합니다.

<PackageReference Include="Oracle.ManagedDataAccess" Version="21.5.0" />

1 netcore .NET net5.0/net6.0 netcore app3.0, netcore app3.1, netstandard2.1
패키지 사용:관리 액세스관리 데이터 액세스.

<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.50" />

TNS 이름(예: ORCL intnsnames.ora)을 사용하는 경우 연결 문자열은 다음과 같습니다.

 string oradb = $"Data Source=ORCL;User Id=hr;Password=hr;";

또한 간편 연결 이름 지정 방법을 사용할 수 있습니다.

 string oradb = $"Data Source=192.168.1.70/{SERVICE_NAME};User Id=hr;Password=hr;";

언급URL : https://stackoverflow.com/questions/3935808/how-can-i-deploy-a-net-application-that-uses-odac-without-installing-the-whole