[OGG] Goldengate 와 expdp 를 활용한 Zero Down-Time Oracle DB Migration 간략 절차
Products/OGG / ODI View Comments
//-- 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 등을 이기종으로 변경 시 서비스의 연속성 보장 |
원문 : http://datacloud.tistory.com/6
End of document.
'Products > OGG / ODI' 카테고리의 다른 글
[OGG] Goldengate 11gR1 CDC 제품에서 Supplemental Logging 설정 (0) | 2012.04.30 |
---|---|
OGG_FLAT FILE 생성 (2) | 2012.04.21 |
Oracle GoldenGate Guide 2 - Oracle to Oracle 단방향 동기화 (0) | 2012.04.17 |
Oracle GoldenGate Guide 1 - Oracle to Oracle 단방향 동기화 (0) | 2012.04.17 |
Recent Comments