'서버에 접속하는 데 실패했거나 접속 문자열을 구문 분석하는 데 실패했습니다'에 해당되는 글 1건

  1. 2016.12.14 Oracle ManagedDataAccess 에서 접속 오류 해결

과거에는 Oracle ODP.net 을 사용하려면 Instant Client 가 필요했었다.

Instant Client 는 C 로 빌드된것으로 아키텍쳐에 따라 구분해서 사용했는데

이번에 다른 프로젝트를 만들다보니 새 버전이 나왔더라..

완전히 .net 으로 코딩된 새버전!



일단 아래 처럼 흔하디 흔한 시작 문자열을 가지고 시작했는데


using Oracle.ManagedDataAccess.Client;

....

....

        public OracleConnector(CONNECT_INFO info)
        {
            string src = string.Format("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={3}))(CONNECT_DATA=(SERVICE_NAME={4})));User Id={1};Password={2};", info.IP, info.LoginID, info.LoginPWD, info.PORT, info.ServiceID);
            con = new OracleConnection();
            con.ConnectionString = src;
            con.Open();
        }



자꾸

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): Oracle 통신: 서버에 접속하는 데 실패했거나 접속 문자열을 구문 분석하는 데 실패했습니다. ---> OracleInternal.Network.NetworkException (0x80004005): Oracle 통신: 서버에 접속하는 데 실패했거나 접속 문자열을 구문 분석하는 데 실패했습니다. ---> System.Security.Authentication.AuthenticationException: SSPI를 호출하지 못했습니다. 내부 예외를 참조하십시오. ---> System.ComponentModel.Win32Exception: 보안 패키지에 사용할 수 있는 인증서가 없습니다


에러가 나더라..

실제로 위와 같은 상황에서는 sqlplus 로 하면

ORA-12638: 신용 검색에 실패했습니다



주로 해당 PC 에 오라클이 기본 상태로 설치된 경우에 발생하는것 같다..


-------------------------

해결 방법 --->


1. 독립적인 환경 구성을 위해 TNS 관리자 경로를 자기 자신으로 설정한다

   app.config 또는 web.config 에 ManagedDataAccess 모듈을 nuget 으로 설치했다면 자동으로 생성됐을거임.. 아래처럼 경로만 추가로 써주면 된다

  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <!--<dataSource alias="ExtOracle" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxxxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=eeee))) "/> -->
      </dataSources>
      <settings>
        <setting name="TNS_ADMIN" value="." />
      </settings>
    </version>
  </oracle.manageddataaccess.client>


2. sqlnet.ora 파일 생성


sqlnet.authentication_services=(none)
NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)

SSPI 관련 문제는 위에줄에 있는 내용으로 커버가 되며, 아래 내용으로 EzConnect 형태로 접속 문자열을 사용할 수 있음. 이미 오라클 설치중이라면 admin 폴더에 찾아가서 변경하면 된다

참고로 이 파일을 만든 후 파일 속성(Properties, Alt+F4)에 가서 "Overwrite if newer" 또는 "Copy Always" 를 선택해서 빌드된 경로로 복사되도록 한다

Posted by 김모작자

댓글을 달아 주세요