본문 바로가기

김탱 개발자/OLE DB

OLE DB 연결 테스트 (Oracle)

보통 OLE DB 연결은 C#의 OleDbConnection 클래스를 이용하면 된다.

하지만 MFC에서 이용하려면 OLE DB 소비자 템플릿(C++)을 사용해야 한다.


MSDN : https://msdn.microsoft.com/ko-kr/library/fk4h509a.aspx

MSDN의 사용방법이 자세하게 나와있다고는 하지만.. 보고 바로 적용하기에는 애로사항이 많아

이번 프로젝트에서 서버-클라이언트 연결했던 것을 정리해보고자 한다.


렛츠고!! 하기전에..

보안관련하여 짚고 넘어가야 할것이 있다.

우선 DB서버-클라이언트 간 접속시 여러 방법이 있겠지만 OLE DB로 접속하게되면 여러 보안취약점에 노출이 된다.

물론, 수정을 통해 보완이 가능하겠지만, 기본적인 OLEDB 접속방식으로는 보안에 취약하다.

몇가지 예를 들자면,


1. 데이터 평문 전송
    DB서버와 클라이언트 간 쿼리문 전송 시 통신구간 암호화가 되지 않기 때문에 정보가 누출될 위험 (패킷 스니핑)
    (OLEDB 방식에서의 해결방법은 나도 모른다..)

2. 문자열 정보를 통한 서버접속정보 획득
    (서버접속정보를 프로그램 내부적으로 암호화하여 가지고 있으면 해결 가능 할듯)

3. 쿼리문 정보를 통한 SQL 쿼리조작 가능
    2번과 동일한 문제로 내부적 쿼리문을 암호화하여 가지고 있어야함

이러한 보안 문제는 DB서버 접속 시 VPN 연결 및 인증을 통해 접속한다거나 하는 방식으로 우회가 가능하나,
어찌댔건 일대일 직접 접근이기 때문에 클라이언트가 많아 질 경우 ex) 100개 클라이언트
DB서버에서는 100개의 세션이 열리고 100개의 VPN 인증을 내려줘야 할 것이다.

따라서, 결론은 DB서버 - 중개서버 - 클라이언트 방식으로 사용하는게 맞다고 본다.
중개서버는 보통 WAS(Wep Application Server)를 이용하며, DB서버는 WAS하고만 연결이 되어 있고
클라이언트는 HTTP Protocol을 이용하여 WAS에 요청하여 DB 데이터를 가져오면 된다.
이 관련에서는 나중에 정리하려 한다.


각설하고, OLEDB 방식은 DB서버가 아니더라도 AccessDB, Excel 등 로컬에서도 유용하게 사용 할 수 있기때문에

괜찮다고 본다.


이제 정말 시작.


Oracle DB서버에 OLE DB로 접속하기 위해서는 서버에 맞는 Oracle Data Access Components(ODAC)가 필요하다.

Oracle ODAC : http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html

32-bit Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio

설치시 필요한 기능만 설치가능한데, OLE DB만 이용할것이라면 Oracle Provider for OLE DB 만 설치하면 설치시간이 짧아져서 좋다.



OLEDB 연결테스트를 하기 전에 상용프로그램으로 DB서버와 접속테스트를 먼저 해보는 것이 좋다.

Toad for Oracle : http://www.toadworld.com/

Toad라는 DB tool은 프리웨어 다운로드가 가능하고, 추가기능을 위해서는 돈을 지불하고 사용하면 된다. (접속 테스트 tool로는 전혀 불편없음)


Toad를 실행하면 앞서 ODAC를 설치했기때문에 관련 드라이버는 알아서 잡을것이고 TNSNames에서 DB서버 정보만 잘 입력하면

접속이 잘 될것이다.

또한, Toad 에서 쿼리문 전송, 권한이 있다면 DB Table View/Edit 등 여러 기능들을 이용 할 수 있기 때문에 클라이언트로 OLEDB 프로그래밍

하기전에 테스트로는 안성맞춤이다.


서버 접속정보는 내가 만든 서버라면 자신이 알것이고, 아니라면 DB서버 관리자에게 요청하면 알려준다.

필요하다면 권한에 맞는 User ID와P/W도 받을 것이다.

ex)

서버네임=

  (DESCRIPTION=

    (ADDRESS=

      (PROTOCOL=TCP)

      (HOST=서버IP)

      (PORT=서버Port)

    )

    (CONNECT_DATA=

      (SERVICE_NAME=DB서버명)

    )

  )


서버접속에 이상이 없다면 위 서버접속정보를 그대로 OLEDB 연결 시 이용하면 된다.

'김탱 개발자 > OLE DB' 카테고리의 다른 글

OLE DB 소비자 템플릿  (0) 2017.04.04