Q&A

  • 오라클과 연결실패
도와주세요.

ADOConnection을 이용하여 오라클 9i에 연결하는데 자꾸 실패합니다.
당장 낼까지 해결해야 하는데 급한 마음에 여기 저기(델파이사이트,오라클사이트) 알아봤는데도 시원한 해결책이 없네요.

개발 PC상에선 프로그램과 오라클의 연결이 잘되는데 이상하게 설치될 PC는 연결이 안됩니다.
먼저 설치될 PC에 오라클 클라이언트(9i)을 설치하여 sql*plus로 연결 테스트하니 잘 됩니다.
참고) tnsnames.ora

AAA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = AAA)
    )
  )

그리고 ODBC로 사용자 DNS,시스템 DNS를 만들어 연결 테스트한 결과도 잘됩니다.
참고) 사용자 DNS
Data Source Name = AAA
TNS Service Name = AAA
User ID = bbb

그런데 같은 PC상의 프로그램에서 ADO로 오라클을 연결하면 자꾸 에러가 발생합니다.
참고) 소스 <--- MainFormCreate시 호출되는 함수입니다.
function 함수
var
  s: string;
begin
  ADOConnection := ADOConnection.Create(Self);

  s := 'Provider=OraOLEDB.Oracle.1;Password=ccc;Persist Security Info=True;' +
    'User ID=bbb;Data Source=AAA';

  ADOConnection.ConnectionString := s;
  
  ADOConnection.LoginPrompt := False;
  
  if ADOConnection.Connected then
  begin
    // Error 표시
    Result := False;
    Exit;
  end;
  
  try
    ADOConnection.Connected := True;
  except
    on E: Exception do
    begin
      // Error 표시
      Result := False;
      Exit;
    end;
  end;

  Result := True;
end;

이 함수의 반환값이 false로 떨어지면서 오라클에 연결 할 수 없습니다.
이 함수 다음에 sql로 select하면 exception가 떨어지면서 다음과 같은 에러메시지를 발생합니다.
ORA-12154 TNS : 서비스명이 해석할 수 없습니다.

해결책 좀 주세요. 부탁드립니다. 꾸벅~
3  COMMENTS
  • Profile
    이용연 2006.04.18 18:10
    답변 달아주셔서 감사합니다.

    먼저 새롭게 프로젝트를 만들어 ADO 커넥션만 코딩하여 연결하니 되는군요.
    그런데 희한하게 FormCreate에서는 연결이 안되고 버튼클릭에서만 연결이 되네여.
    그래서 버튼클릭을 새로 만들어 기존프로젝트에 붙여 테스트할땐 다시 안되고...이유를 모르겠네여

    결국 ADO 커넥션을 먼저 연결한 다음 다시 하나 하나 기능을 추가해서 새롭게 만들었습니다.
    이것때문에 납품일정에 3일이나 더 소요되고...

    모두 즐프하세요.  


  • Profile
    손희석 2006.04.12 18:26
    문제가 되는  PC의 Oracle 드라이버와 정상동작하는 PC의 Oracle드라이버의 버젼이 같은지요?
    확인해 보시기 바랍니다. 만약 틀리다면 MS의 MDAC을 설치하시면 대부분의 문제가 해결되는 것으로
    알고 있습니다.

  • Profile
    착한천사 2006.04.16 05:03
    착한천사입니다
    ConnectionStrnig을 봤을 때 OraOLEDB.Oracle.1 를 사용하시는 걸로 되어 있네요.
    따라서, Oracle Client를 반드시 설치를 해야만 합니다.
    왜냐하면, ORAOLEDB는 Oracle Client 배포시 추가되는 것으로
    ADO에서는 자동적으로 추가되지 않습니다.
    그러므로, ADO에서 MSDAORA(Microsoft Oracle OLEDB)를 사용하시든지,
    아니면, Oracle Client(개발PC의 Oracle Client와 설치될 PC의 Oracle Client는 동일해야만 함)를
    설치 혹은 재설치해 보시기 바랍니다.