string(36) "/blog/?pageid=1&uid=132&mod=document"

HOME

ABOUT US

Blog

Blog

Blog

[Ark for CDC] 초기복제 과정

2020.11.13

실시간으로 데이터를 복제하여 시스템 정보를 통합하기 위해 우리는 Ark for CDC의 기능을 이용해 이기종 DB 또는 상이한 플랫폼 환경에서 데이터를 실시간으로 캡처, 변환하여 반영한다.

소스와 타겟간 변경된 데이터를 복제하기 전에 복제 대상인 소스 데이터 전체를 최초 복제하는 과정이 필요하다.

Ark for CDC에서는 이를 초기복제라고 한다. 초기 복제가 완료된 다음에 실시간 변경 데이터를 복제하게 된다.

초기복제는 Target DB의 유형에 따라 최적의 데이터 복제의 방법이 요구되며, 성능/부하/안정성 측면에서 Oracle의 Export/Import 혹은 Datadump를 권장하며, Target DB가 Oracle DB가 아닌 경우 Ark for CDC의 초기복제 기능을 사용하여 초기복제를 진행한다. 20201113144435_3p4icqc.png

세부 과정은 아래와 같다. 

 

1.DB 사전 점검 및 세팅

 .Archive Mode, Database level Supplemental logging (Min)

 .Supplemental Log Group 설정 : ArkCDC Supplemental Logging Script Install & Setup 

 .Source DB Active Transanction  조회 : select s.sid, s.username, t.start_time from v$session s, v$transaction t where s.saddr = t.ses_addr;

 .Current SCN 확인 : select to_char(current_scn) from v$database; 

 

2.Source Data 초기복제 

 .Oracle (Data Pump), Other DB(3rd Party Tool, DB Link, ArkCDC 초기복제 기능, 기타)

 

3.Ark for CDC 설치 및 Extract 시작 

 .4에서 조회한 SCN부터 추출 : >admgr start –s [조회 SCN] [Extract 모듈명]

 

4.Send 

 .>admgr start send [send모듈명]

 

5.Post 시작 

 .>admgr start post –i [post 모듈명] : "초기복제 기간중 변경된 데이터의 적용" 시에는 config 중 'adjust_collision="yes"'를 설정하고 "-i" 옵션으로 실행해야 함. 

 .” –i” 옵션은 SQL적용시 발생할 수 있는 DBMS의 오류를 무시하고 적용하게 함. 물론 무시되는 SQL문이 정합성에 중요하기 때문에 Discard File에 해당 데이터를 기록하게 한다.  

 .“adjust_collision”은 초기복제된 데이터에 변경 데이터가 이중으로 적용될 경우 이를 방지하기 위한 것으로 아래와 같이 동작한다. 

  -Insert 문장의 Row가 이미 존재한다면 Insert는 Update로 변환

  -Update 문장의 Row가 존재하지 않는다면 Update는 Insert로 변환 

  -Delete 문장의 Row가 존재하지 않는다면 skip 처리

 

6.Post 재시작 

 .>admgr start post [post모듈명] : 초기복제 완료후에는 adjust_collision 해제 및 기본 옵션으로 실행 

 

이렇게 초기 복제가 끝난 이후 Ark for CDC는 Direct log access 방식으로 Transaction log file에 직접 액세스하여 변경분의 데이터만을 추출하게 된다. 그렇기에 소스서버 운영 성능에 부하를 주지 않고, 실시간으로 추출된 데이터는 SQL로 변환되어 Target DBMS에 전송되기에 플랫폼 환경과 상관없이 이기종 DB 복제가 가능하다.