//-- 2012.04.18. 초안작성 
//-- 2012.05.07. 수정 
 
1. CDC 제품을 활용한
Oracle DB 실시간 Migration 개념
 
  Source
시스템을 운영하는 동안 Source DB 을 백업 받아서
Target 시스템을 구축하고 구축하는 동안 Source 시스템에 유입된 변경 데이터를
정합성에 어긋남이 없이 Oracle GoldenGate 을 이용하여 작업을 하게 됩니다.
 

 
 
  
  
  
  
  
  
  
  
  
  
  
  
 
 
 
 
 
 
 
  | 
   1.     
  GoldenGate 변경 데이터 추출 시작
   
  2.     
  Source DB 백업  
  3.     
  백업 데이터를 Target DB 에 적용 
  4.     
  추출된 변경 데이터 Target DB에 적용
   
  5.     
  APP 에서 기존 Source 시스템에서부터 신규 Target 시스템으로의 Connection 을 변경 
   | 
 
 
Zero Down-Time Migration 에서 Source DB 의
Backup 및 Target DB 의 Recovery 그리고 
Oracle GoldenGate 을 이용한 데이터 복제는 아래와 같은 방법으로 진행됩니다. 
 

 
 
 
본 간략 절차
사례에서는, 소규모 Size Oracle DB 를 exp/imp dump 를 이용해 Target DB 로 옮겨 실시간
DB 동기화를 구성하는 방법으로 Zero Down-Time
Migration 을 구현해 보았습니다.
 
2. Zero Down-Time Migration 실례 (간략 절차)
 
 
  | 
     
   | 
  
   Source
  DB 
   | 
  
   Target
  DB 
   | 
 
 
  | 
   Step
  1 
   | 
  
   CDC(Change
  Data Capture)를 위한 Oracle Golgdngate 설치 (DB 무 중단) 
   | 
 
 
  | 
   Step
  2 
   | 
  
   Goldengate 변경 분 추출 Process (extract) 시작 
   | 
  
     
   | 
 
 
  | 
   Step
  3 
   | 
  
   SCN 기반 데이터 추출 (expdp) 
   | 
  
     
   | 
 
 
  | 
   Step
  4 
   | 
  
     
   | 
  
   추출된 데이터 DB 에 적재 (impdp) 
   | 
 
 
  | 
   Step
  5 
   | 
  
     
   | 
  
   Goldengate
  변경 분 반영 Process (replicat) 시작 
   | 
 
 
  | 
   Step
  6 
   | 
  
   CDC(Change
  Data Capture) 기반, DB 동기화(sync)
  중인 상태 
   | 
 
 
2-A. Change Data
Capture 를 위한 Oracle Golgdngate 설치
 
  Oracle 사의 CDC 제품인 Goldengate 제품을 설치합니다. 설치를 위한 Requirement 나 Installation 과정은 이 문서에서는
생략하겠습니다.
 
2-B. Source DB 에서 Goldengate 변경 분 추출 Process (extract) 시작
 
가.  
GGSCI 에서 해당 extract 와 pump 를 시작해 Data 변경분을 추출 시작하기
 
 
  | 
   GGSCI> info all 
  Program     Status      Group       Lag          
  Time Since Chkpt 
  MANAGER     RUNNING                                            
  EXTRACT     STOPPED     EXTORCL     00:00:02      00:00:07     
  EXTRACT     STOPPED     PMPORCL     00:00:04      00:00:03 
  GGSCI> start
  *ORCL 
  GGSCI> info all 
  Program     Status      Group       Lag           Time Since Chkpt 
  MANAGER     RUNNING                                            
  EXTRACT     RUNNING     EXTORCL     00:00:02      00:00:01     
  EXTRACT     RUNNING     PMPORCL     00:00:01      00:00:02 
  GGSCI> 
   | 
 
 
    역시, 이 문서가 Goldengate 제품 자체에 대한 문서는 아니기 때문에, 자세한 내용들은 생략하겠습니다.
 
2-C. Source DB 에서 SCN 기반 데이터 추출 (expdp)
 
가.  
Long Transaction 유무를 확인하고, SCN 을 추출해 둡니다.
 
 
  | 
   SQL> select
  min(start_time) from v$transaction ; 
    
  MIN(START_TIME) 
  ---------------------------------------- 
          
                                      ---> 현재 수행중인 Transaction 이 없음 
  SQL> col a format 99999999999999999999 
  SQL> select
  dbms_flashback.get_system_change_number a from dual ; 
    
                      A 
  --------------------- 
         12478584165405                       ---> 추출 시점의 SCN 값 입니다. 
    
  SQL> select min(start_time) from
  v$transaction ; 
    
  MIN(START_TIME) 
  ---------------------------------------- 
  ---> 현재 수행중인 Transaction 이 없음 
  SQL> 
   | 
 
 
v$transaction 에 수행 중인 transaction 이 있더라도
상관 없습니다. 다만 수행중인 Transaction 의 start_time 을 비교해서, 계속 변경되고 있는지 – 기존에 수행 중인 Transaction 이 종료 되고, 새로운 transaction 이 시작되었는지 – 확인 할 필요는 있습니다.
 
나.  
Export dump 를 사용해, Source DB 해당 data 를 추출
 
 
  | 
   Oracle ] expdp
  userid=\"system/password_of_system as sysdba\" job_name = 120418_boro_pm_exp
  dumpfile = 120418_boro_pm_exp.dmp logfile = 120418_boro_pm_exp.log schemas = SEI_PM
  flashback_scn = 12478584165405 
   | 
 
 
   
Oracle 10g 이상에서는 exp/imp 보다 속도 등이 개선된 exp dump가 지원됩니다. 이 사례에서는 특정한 DB User (SEI_PM) 의 모든 DB Data 를 120418_boro_pm_exp.dmp 이라는 OS File 로 추출한
것이고, flashback_scn 값을 앞서 dbms_flashback
을 통해 추출한 값으로 입력합니다.
    Dmp
file 이 생성되는 기본 위치는 $ORACLE_BASE/admin/SID/dpdump 입니다.
 
   
File 생성이 완료되면, Target DB 로 dmp file 을 전송합니다. 보통은 compress 후 ftp 를 이용합니다.
 
2-D. Target DB 로
추출된 데이터 DB 에 적재 (impdp)
 
가.  
보통, 아래와 같이 간단히 DB에 적재할 수 있습니다. 해당
DB Schema 를 먼저 만들어 주어도 import 에 문제가 없습니다.
 
 
  | 
   Oracle ] impdp
  userid=\"system/password_of_system as sysdba\" job_name = 120418_boro_pm_imp
  dumpfile = 120418_boro_pm_exp.dmp logfile = 120418_boro_pm_impdp.log  
   | 
 
 
나.  
다만, 여러 개의 Source DB 에서 1개의
Target DB 로 DB Data 병합하는 경우,
temp schema 를 통해 필요한 Data 만 적재할 수도 있습니다. 아래의 Query 를 참조하세요
 
2-D.나-1. Temp
Schema 를 사전에 생성합니다.
 
  | 
   SQL> drop user tmp_sei_pm cascade ;  
  SQL> create
  user tmp_sei_pm identified by password_of_tmp_sei_pm default
  tablespace TMP_SEI_PM temporary tablespace TEMP_FIELD ;  
  SQL> grant resource, connect, dba to tmp_sei_pm
  ; 
   | 
 
 
2-D.나-2. Source DB 에서
추출한 Data 를 Temp Schema 로 임시로 적재합니다
 
  | 
   Oracle ] impdp userid=\"system/password_of_system
  as sysdba\" job_name = 120418_boro_pm_imp dumpfile = 120418_boro_pm_exp.dmp
  logfile = 120418_boro_pm_impdp.log remap_schema=sei_pm:tmp_sei_pm 
   | 
 
    마찬가지로, 기본 위치는 $ORACLE_BASE/admin/SID/dpdump 입니다
 
2-D.나-3. 임시로
적재된 Data 에서, 필요한 Data 만을 실 사용할 Schema 로 적재
 
실제 사용할 Schema 로 적재할 때는, 해당 시나리오에 따라, 특정 코드값의 Data 만을 삭제 하거나, 특정 코드값의 Data 를 제외하고 삭제, 특정 코드값에 해당하는 rows 만을 insert 하는 경우 등이 있겠습니다. 이 때 사용될 Query 들은 아래와 같습니다.
 
 
  | 
   SQL> create
  table SEI_PM.PM_P_AREA as select * from TMP_SEI_PM.PM_P_AREA where job_no = 'SC2222'
  ; 
  SQL> delete SEI_PM.PM_P_AREA   where job_no
  <> 'SC2222' ; 
  SQL> insert into SEI_PM.PM_P_AREA         select * from
  TMP_SEI_PM.PM_P_AREA        where job_no
  = 'SC2222' ; 
  SQL> delete
  SEI_PM.PM_P_BM      where job_no = 'SC2222' ; 
   | 
 
 
2-E. Target DB 에서 Goldengate 변경 분 반영 Process (replicat) 시작
 
 
  | 
   GGSCI> info all 
  Program     Status      Group       Lag          
  Time Since Chkpt 
  MANAGER     RUNNING                                            
  REPLICAT     STOPPED     R_ORCL11     00:00:02      00:00:07     
  REPLICAT     STOPPED     R_ORCL12     00:00:04      00:00:03 
  GGSCI> start replicat r_orcl11, aftercsn 12478584165405 
  GGSCI> start replicat r_orcl12, aftercsn 12478584165405 
  GGSCI> info all 
  Program     Status      Group       Lag           Time Since Chkpt 
  MANAGER     RUNNING                                            
  REPLICAT     RUNNING     R_ORCL11     00:00:02      00:00:01     
  REPLICAT     RUNNING     R_ORCL12     00:00:01      00:00:02 
  GGSCI> 
   | 
 
 
3. CDC 제품(Oracle
Goldengate)을 활용한 Zero Down-Time Migration 활용 사례들
 
 
  | 
   •      Oracle GoldenGate 을 운영하기 위해서 초기 데이터 구축을 위해서 사용  
    - Source DB 에서 Target DB 로 데이터를 동일하게 일치 시키는 Initial Loading 작업  
    - OGG을 이용한 조회 시스템, ODS/DW, 비상 시스템, 타
  시스템 연계 시 사용  
  •      System/DB 업그레이드 시 연속적인 서비스를 진행하기 위해서 사용  
    - System 증설 또는 DB 버전 Upgrade 시 서비스
  연속성 보장  
  •      주
  시스템의 PM 작업 (Planned Outage,
  Unplanned Outage) 시 사용 
    - 주 시스템에 대해서 장시간 작업을 진행하기 위하여 임시 시스템에서 서비스의 연속성 보장  
    - 주 시스템의 작업 완료 후 임시 시스템으로부터 주 시스템으로 서비스의 연속성 보장  
  •      주
  시스템/DB 을 이기종으로 변경하기 위해서 사용 
    - 주 시스템의 H/W 또는 OS, DB 등을
  이기종으로 변경 시 서비스의 연속성 보장  
   | 
 
End of document.