재우니의 블로그

ASP.NET MVC 의 .NET 4 이상, 64 BIT 서버 환경에서 ODP.NET 설치 및 구현하기

 

패키지 관리자 콘솔에서 아래의 Oralce.ManagedDataAcess 를 다운로드 받습니다.

VISUAL STUDIO 툴이 있다면, 패키지 관리자 콘솔에서 Install-Package Oracle.ManagedDataAccess 라고 입력하고 엔터를 치면 웹프로젝트에 설치 및 셋팅이 됩니다.

https://www.nuget.org/packages/Oracle.ManagedDataAccess/

 

설치 하게 되면, packages 폴더 안에 아래와 같이 버전명으로 폴더가 만들어져 있습니다.

여기서 웹프로젝트가 .net 4.0 이상에서 구현할 예정이므로 아래의 폴더내의 Oracle.ManagedDataAccess.dll 파일을 참조하게 됩니다.

웹프로젝트의 bin 폴더에 가면 위의 dll 파일이 복사되어 있는 것을 볼 수 있습니다. 여기서는 이 dll 파일 이왼 사용하지 않습니다.

 

이를 사용하기 위해서 환경정보가 web.config 에 명시되어 있어야 하는데요.. 설치 이후에 자동적으로 web.config 에 몇가지 속성값을 넣어주긴 합니다. Oracle.ManagedDataAccess.dll 파일에 대한 configSections 에 명시했는데요. 이 부분은 꼭 필요한 부분이니 제거해서는 안됩니다. 

<configuration>
    <configSections>
        <section name="oracle.manageddataaccess.client"
        type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, 
                      Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    </configSections>
</configuration>



그 다음에 runtime 태그에 위의 publickeytoken 과 동일하게 설정한 부분이 있습니다.


<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
</dependentAssembly>
</assemblyBinding>
</runtime>


그 다음에 연결자 정보를 가져오는 부분의 설정값이 필요한데요.


<oracle.manageddataaccess.client>
<version number="*">
<settings>
<setting name="TNS_ADMIN" value="C:\Oracle\product\11.2.0\dbhome_2\NETWORK\ADMIN"/>
</settings>

<dataSources>
<dataSource alias="ORCL" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
                                                   (CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
</dataSources>
</version>
</oracle.manageddataaccess.client>

<system.data>
<DbProviderFactories>
<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.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>


TNS_ADMIN 변수가 설정되어 있는 부분이 있는데, 윈도우의 시스템 속성에 있는 환경 변수에 시스템 변수에 할당할 부분을 여기에 기술 한듯 싶긴 합니다. 오라클 클라이언트 설치하면 TNSNAME.ORA 파일이 존재하는 폴더 경로를 기재해 주면 됩니다.

dataSource 에 있는 descriptor 는 TNSNAME.ORA 파일 내부의 연결자 코드 값 중에 사용할 연결자를 넣습니다. 여기서 USER ID, PASSWORD 는 기술하지 않습니다. (기본적으로 TNSNAME.ORA 안에는 HOST, SERVICE_NAME 이왼 기재 하지 않습니다.)

자세한 내용은 http://www.oracle.com/technetwork/database/windows/downloads/odpmbetainstall-1696475.html 사이트를 참고 해 주세요.

 

이제 코드를 기재해 보죠.

사용하기 위해서는 우선 USING 문으로 컴포넌트를 호출합니다.


using Oracle.ManagedDataAccess.Client;

using Oracle.ManagedDataAccess.Types;


아래는 DataSet 으로 가져오기 위한 메소드를 기술한 샘플입니다.


using System;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;

namespace Connect
{
  class Program
  {
    static void Main(string[] args)
    {
      try
      {
        // Please replace the connection string attribute settings
        string constr = "user id=scott;password=tiger;data source=oracle";
        OracleConnection con = new OracleConnection(constr);
        con.Open();
        Console.WriteLine("Connected to Oracle Database {0}", con.ServerVersion);
        con.Dispose();
        Console.WriteLine("Press RETURN to exit.");
        Console.ReadLine();
      }
      catch (Exception ex)
      {
        Console.WriteLine("Error : {0}", ex);
      }
    }
  }
}