Oracle 클 라 이언 트 설치 면제 개발 배치 방법

4663 단어 Oacle
문제 설명
C \ #. Net 클 라 이언 트 프로그램 을 개발 할 때 ODAC 연결 데이터 베 이 스 를 사 용 했 습 니 다. 개발 환경 에 ODP. NET 플러그 인 을 설치 해 야 합 니 다. 실제로 Oracle Client 가 설치 되 어 있 습 니 다.Oracle 을 연결 하 는 문자열 은 이 Oracle Client 의 프로필 에 직접 설 정 됩 니 다 (% ORA HOME% \ \ client 1 \ \ NetWork \ tnsnames. ora). 정 보 는 다음 과 같 습 니 다.
 
HJSYSDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.52)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )

 
 
문자열 을 연결 하 는 IP 와 데이터베이스 인 스 턴 스 는 이 특정한 파일 에 설정 해 야 하기 때문에 개 발 된 클 라 이언 트 프로그램 과 분리 되 고 프로젝트 의 배치 에 있어 두 단계 가 더 많 습 니 다. 1) Oracle 클 라 이언 트 의 설치 (480 M 이상).2) 데이터베이스 연결 의 수 동 설정.
 
불필요 한 설치 과정 을 줄 이 고 데이터 베 이 스 를 연결 하 는 설정 을 프로젝트 프로그램 에 배치 하여 프로그램 배 치 를 더욱 단순화 시 키 기 위해 서 는 Oracle 클 라 이언 트 의 설치 배치 방법 이 필요 합 니 다.
 
2. 문제 해결
ODP. net 에서 제공 하 는 동적 라 이브 러 리 (최소 지원) 를 직접 사용 하여 프로젝트 시작 디 렉 터 리 에 배치 합 니 다. 다음 파일:
 
oci.dll
ociw32.dll
Oracle.DataAccess.dll
oraocci11.dll
oraociei11.dll
OraOps11w.dll

 
 
프로젝트 의 app. config 에 다음 설정 을 추가 하여 응용 프로그램 에 데이터베이스 연결 드라이버 를 제공 합 니 다.
 
 
 
<system.data>    
   <DbProviderFactories>
      <remove invariant="Oracle.DataAccess.Client" />
      <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
           description="Oracle Data Provider for .NET"
           type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>

 
 
Oracle 클 라 이언 트 의 연결 인 스 턴 스 를 사용 하지 않 았 기 때문에 프로그램 에서 의 연결 은 특별히 지정 한 데이터 베 이 스 를 연결 하 는 IP 와 데이터 베이스 인 스 턴 스 정 보 를 해 야 합 니 다. 다음 과 같 습 니 다.
            string connectionString = 
                  " DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)"
                + "(HOST=192.168.18.52)(PORT=1521))"
                + "(CONNECT_DATA=(SERVICE_NAME=ORCL)));"
                + "USER ID=data;PASSWORD=data;";

            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                string sql = "**********";
                connection.Open();
                OracleCommand cmd = new OracleCommand(sql, connection);
                OracleDataAdapter dataReader = new OracleDataAdapter(cmd);
                DataSet dataSet = new DataSet();
                dataReader.Fill(dataSet);
                gridControl1.DataSource = dataSet.Tables[0];
            }

 
실체 집합 을 사용 하기 전에 Oracle 클 라 이언 트 가 제공 하 는 연결 문자열 을 직접 사용 합 니 다. App. config 의 설정 은 다음 과 같 습 니 다 (HJSYSDB 유의).
  <connectionStrings>
    <add name="DataEntities"
         connectionString="metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl;
         provider=Oracle.DataAccess.Client;
         provider connection string=&quot;
         DATA SOURCE=HJSYSDB;
         PERSIST SECURITY INFO=True;USER ID=DATA&quot;"
         providerName="System.Data.EntityClient" />
  </connectionStrings>

 
설치 면제 방법 을 사용 한 후에 실체 집합의 연결 문자열 도 상응하는 수정 을 해 야 한다. 그 중에서 변 경 된 주요 내용 은 DATA SOURCE 의 설정 인 데 데이터베이스 서버 의 IP 주소 와 데이터베이스 실례 를 포함한다.
  <connectionStrings>
    <add name="DataEntities"
         connectionString="metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl;
         provider=Oracle.DataAccess.Client;
         provider connection string=&quot;
         DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.18.52)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));
         PERSIST SECURITY INFO=True;USER ID=DATA&quot;"
         providerName="System.Data.EntityClient" />
  </connectionStrings>

 
 
3. 문제 총화
1. ODP. net 에서 제공 하 는 Oracle. DataAccess. dll 을 사용 할 때 서버 에 연 결 된 Oracle 버 전 및 프로그램 이 배치 한 시스템 의 버 전 문 제 를 주의해 야 합 니 다.
 
2. 웹 프로그램의 관련 설정 은 이 방법 과 대체적으로 같 습 니 다.

좋은 웹페이지 즐겨찾기