BLOG ARTICLE 동기화 | 2 ARTICLE FOUND

  1. 2010.11.16 DB 복제, Data 동기화 솔루션에 대한 고민
  2. 2010.04.14 Oracle 9.2.0.7에서의 로그마이너 버그

 DBMS를 운영하다보면 종종 DB 복제, 혹은 특정 data의 동기화를 해야할때가 있다. 동일한 DBMS라면 그것도 시장에 잘 알려져 있어서 확실한 3rd party 복제 툴이 있거나, 혹은 한 두개 정도의 테이블만 복제/동기화 작업을 해줘야한다면 큰 문제가 아닐것이다. 허나 여러 종류의 DB를 사용하다보면, 그것도 시장에 널리 퍼지지 않았거나, 국내에서만 사용하는 DB라는 이유로 확실한 3rd party 툴이 없다면... 아마 저처럼 고민에 빠지게 될겁니다.
 제 고민의 원인에 대해서는 제가 앞에 작성했던 글들을 보시면 아시게 될겁니다.
2010/06/16 - [Database] - Tibero4 migration 모험기 (4) 중간정리 : Oracle DBA의 Tibero 사용 후기
2010/05/07 - [Database] - 국산 DBMS. TmaxData Tibero TAC의 좋은점과 아쉬운점.
2010/02/25 - [Database] - [이기종 DB간 Data 공유] MS-SQL에서 Openquery를 사용할때 문제점.
2010/02/01 - [Database] - Tibero4 migration 모험기 (3) Index rebuild 기능
2010/01/28 - [Database] - Tibero4 migration 모험기 (2) tbAdmin에 대해서
2010/01/07 - [Database] - [이기종 DB간 Data 공유] MS-SQL에서 Oracle에 있는 Data 가져와서 동기화 맞추는 기능 구현
2009/11/23 - [Database] - Tibero4 migration 모험기 (1) 사용자 정의 함수 사용시 경험한 묘한 버그
아~ 꽤 많군요. 걍 눈에 띄는것들만 선택한 건데...

 DB 복제(Replication), Data 동기화(Synchronization), Change Data Capture(CDC)... 뭐 이런 식으로 불리거나 비슷한 단어들로 묘사되는 툴들이죠.
 Oracle만 혹은 Oracle만큼 시장에 많이 알려진 DB2, MySQL, SQL Server, Sybase 등의 DBMS들, 심지어는 국내에서는 잘 쓰지 않는다고 알려진 Postgresql, FireBird까지도 지원하는 툴이 있는데, 저에게는 TmaxData Tibero라는 복병이 있습니다. 아시다시피 국산 소프트웨어이며, Oracle의 문법 체계를 그대로 적용하여 Query, Procedure 등을 개발할 수 있는 등의 많은 장점을 지닌 제품입니다.
 문제는 Tibero를 지원하는 툴들이 거의 없다는겁니다. NHN의 Cubrid가 오픈소스 프로젝트를 열고, 많은 개발자, 사용자들을 끌어들여서 Pentaho에서 JDBC를 이용하여 접속을 가능하게 하는 문서(블로그)가 검색되는 등의 성과를 올리는 것과는 반대로 "Orange for Tibero"외의 성과가 없는게 Tibero측의 아주 큰 약점입니다.
 물론 TmaxData에서는 자사의 Tibero와 함께 DB복제 솔루션인 ProSync와 ETL 솔루션인 ProETL이라는 제품도 판매하고 있습니다만, 아직 제약이 많습니다. Oracle-to-Tibero 복제는 이상없이 잘되는데, Tibero-to-Tibero 복제에서 문제가 생겨서 도입하려다 중지한 상태입니다. 뭔가 남들과 조금 다르게 구성하면 잘 안되는게 생기네요.

 이 모든것을 뒤로하고...

지금 고민은 "오픈소스 ETL/BI 솔루션 중에서 어떤 제품을 사용하는게 좋은가?"입니다. 음... 어떤게 좋을까요?
고민되네요.

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


  작년말에 한창 문제가 되었던 내용입니다.
저희가 운영하는 Oracle DB 중에서 Tibero로 이전하는 DB가 있었습니다. Tibero에서 Oracle로 Gateway(Tibero에서 제공한 Gateway)를 이용해서 Database link를 만들어서 일반 DB Link 이용하듯이 쓸 수 있어서 좋았는데, 문제는 Oracle DB에 있는 기준 정보들이 변경되었을때 이를 Tibero에 적용시킬 방법이었습니다. Oracle에서는 현재 Tibero로 DB Link를 지원하지 않으므로 Oracle측에서 변동내용이 있을때 Data 동기화 작업을 위해서 Tmax Prosync라는 제품을 이용하였습니다.

* Tmax Prosync
[Oracle to Tibero Prosync], [Tibero to Oracle Prosync]가 있는데, [Tibero to Oracle Prosync]는 시스템에 부하를 많이 주는 문제가 있어서 제외하고 [Oracle to Tibero Prosync](이하 Prosync)만 사용하기로 했었습니다.
 Prosync는 Oracle의 로그마이너를 이용하여 테이블의 변동 내용을 알아내고, 이를 로그 파일로 저장한뒤에 Tibero측에 insert, update, delete 문장을 보내서 실행시키는 구조입니다. 그래서 Oralce DB에서도 필요한 설정을 했죠. (알고 계시겠지만 Supplemental Logging 설정이 필요합니다.)
그리고 실제 구축을 했었죠. 그런데 실제로 사용하는 중에 문제가 생겼습니다.

* 문제
 일부 테이블은 몇개의 컬럼이 빠진채로 변경 내용이 감지 되어서 Tibero측에 정상적인 쿼리문이 보내지지 않더군요.

* 원인 및 해결 과정
 TmaxData의 여러 엔지니어가 와서 이 문제에 달려들었었습니다. 결국 마지막에 밝혀낸건 Oracle logminer의 버그라고 하네요. 10g 버전에서는 해결이 되었다고 합니다. 10g를 사용하는 곳은 이상없이 사용 가능하실테고, 저희처럼 9i를 사용하는 곳은 문제가 되네요. Function Based Index가 생성되어있는 테이블은 Logminer에서 비정상적으로 인식을 해서 변경 내용을 정상적으로 감지 하지 못하더군요. Function Based Index를 제거하니까 바로 정상적으로 인식하더군요.
 해당 인덱스를 살펴보니 실제로 쓰이지는 않는 인덱스이더군요. (왜 만들었는지... 제가 입사하기전에 만든거라 왜 만든건지, 누가 요청한건지를 모릅니다.) 그래서 해당 인덱스를 일반 인덱스로 바꿔버렸습니다. 그 다음부터는 잘 되더군요.
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST