Oracle GoldenGate Guide 2 - Oracle to Oracle 단방향 동기화
Products/OGG / ODI View Comments
Oracle to Oracle 단방향 동기화
# 본 가이드는 실습 위주로 작성되었으며 좀더 자세한 내용은 첨부된 문서파일에 있습니다.
@ 서로 다른 Layout을 가진 Table의 동기화
@ 두 table의 DDL 동기화
목 차
1. Different Layout DML Synchronization
1-2-1. Installation
1-2-2. Configuration
1-2-3 Source System
1-2-4 Target System
1-3. Change Data Capture
1-3-1 Change Capture 구성
1-3-2. Change Delivery 구성
1-4. Generate Activity and Verify Results
1-4-1. Generate Database Operation
1-4-2. Verify change capture and delivery
2. DDL Synchronization
2-1. Environment
2-1-1. Architecture
2-1-2. 지원 범위
2-2. Preparation
2-2-1. Installation
2-2-2. DDL Objects Install
2-3. DDL Capture
2-3-1. Extract
2-3-2. Replicat
2-3-3. Result
* 환경과 Architecture는 첨부된 manual에 기술되어 있음
Ø Environment
- 테스트를 위해 두 개의 Oracle DB instance로 실습환경을 구성하였다.
구분 |
Hostname |
OS Version |
OS Account |
DB SID |
DB Version |
DB Schema |
Source |
mwtech |
GNU / LINUX |
lovelybin |
orcl |
Oracle v11.2 |
mw_addr |
Target |
mwtech |
GNU / LINUX |
lovelybin |
ortest |
Oracle v11.2 |
mw_addr |
Ø Install
- ggs와 ggt에 각각 GG의 압축을 풀어 설치한다.
- Source system과 target system 모두 하위 디렉토리를 생성한다.
Shell> ./ggsci GGSCI> CREATE SUBDIRS |
- DML에 의해 변경된 데이터의 동기화를 위한 로그파일의 활성화
Supplement Log
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; |
Redo Log
SQL> ALTER SYSTEM SWITCH LOGFILE; |
Ø Manager process 구성
- Source 시스템에 Manager parameter file을 만들고 사용할 포트를 설정한다
GGSCI > edit params mgr |
--Source port 3030
|
Ø Table 생성
SQL> insert into mw_addr values('책임','이원혁','726','rheesid@penta.co.kr'); SQL> insert into mw_addr values('책임','김은하','784','silver@penta.co.kr'); SQL> insert into mw_addr values('전임','전승엽','889','seraphmate@penta.co.kr'); SQL> insert into mw_addr values('전임','신희승','759','zzang10003@penta.co.kr'); |
Ø supplemental logging 추가
- GGSCI로 Source DB에 접속 후 2개의 테이블에 대한 추가 로깅 설정
GGSCI > add trandata lovelybin.mw_addr |
Ø Manager process 구성
GGSCI > edit params mgr |
--Target Port 3031
|
Ø Table 생성
Target 시스템에 table 생성
- Target System은 Source의 Table과 다른 Layout으로 구성한다.
- row의 번호를 가져오는 row_id와 commit된 시간을 찍는 commit_ts 컬럼을 추가한다.
- 변경된 데이터 감지를 위한 Capture Process를 구성한다
Ø Extra Group 추가
GGSCI> ADD EXTRACT EXTCDC01, TRANLOG, BEGIN NOW, THREADS 1 |
- Extract Group 정보 확인
GGSCI > info extract extcdc01 |
- Extract Parameter 설정
GGSCI > edit params extcdc01 |
--Source System Extract extract extcdc01
--Login Infomation userid lovelybin, password ********
--write to trailfile exttrail ./dirdat/01
BR BROFF
DISCARDFILE ./dirout/extcdc10.dsc, append, purge
--Table List table lovelybin.mw_addr, tokens (tk_rowid = @getenv("ORARECORD","ROWID"),tk_commit_ts=@g etenv("GGHEADER","COMMITTIMESTAMP"));
|
Ø EXTTRAIL 정의
- extract에서 변경될 데이터를 추출하기 위한 exttrail을 추가한다.
GGSCI > ADD EXTTRAIL ./dirdat/01, EXTRACT EXTCDC01, MEGABYTES 10 |
Ø PUMP 추가
- exttrail에서 변경된 데이터를 읽어오기 위한 pump를 추가한다.
GGSCI > add extract pmp01, exttrail ./dirdaat/01, begin now |
- pump의 parameter 설정
GGSCI > edit params pmp01 |
--Pump Parameter extract pmp01
passthru
--remote host rmthost 210.108.181.24, mgrport 3031 -- rmttrail ./dirdat/11 rmttrail ./dirtest/11
--table definition table lovelybin.mw_addr; |
|
- DATA PUMP USING CASE
l 네트워크와 Target 장애에 대한 보호
l 데이터 필터링 또는 전송의 단계적 구현
l 여러 Source로부터 Target으로 데이터 통합
l 하나의 Source를 복수의 Target으로 동기화
Ø RMTTRAIL 추가
- PUMP에 있는 DATA를 가져오기 위한 RMTTRAIL을 추가한다.
GGSCI > ADD RMTTRAIL ./dirdat/11, EXTRACT PMP01 |
Ø DEFGEN 설정
GGSCI > EDIT PARAMS DEFGEN |
Defsfile ./dirdef/tbdef.def, purge Userid lovelybin password ******** Table lovelybin.mw_addr; |
- 변경된 데이터를 감지하여 Target System으로 전달하기 위한 설정을 한다.
Ø Checkpoint table 설정
- 변경된 데이터를 어디까지 읽어 들였는지 확인하기 위하여 Checkpoint table을 설정한다.
-
Target System에 Checkpoint table을 추가하기 위해 GLOBAL Parameter 파일을 설정한다.
GGSCI> EDIT PARAMS ./GLOBALS |
checkpointtable lovelybin.ggschkpt |
- Target System DB에 접속해 Replicat Checkpoint table을 생성한다.
GGSCI> DBLOGIN USERID lovelybin, PASSWORD ******** GGSCI> ADD CHECKPOINTTABLE |
Ø Replicat 추가
- Target System에 Replicat Group을 추가한다.
GGSCI> ADD REPLICAT repcdc01, EXTTRAIL ./dirdat/11 |
- Replicat Parameter 설정
- colmap을 이용해 Target table의 column을 설정한다.
GGSCI> EDIT PARAMS REPCDC01 |
--Target System Replicat replicat repcdc01
--configuration setenv (ORACLE_SID="ortest")
--Login Infomation userid lovelybin, password ********
sourcedefs ./dirdef/tbdef.def
discardfile ./dirrpt/repcdc01.dsc, append, purge
map lovelybin.mw_addr, target lovelybin.mw_addr, colmap (usedefaults, row_id = @token("t k_rowid"), commit_ts=@token("tk_commit_ts")), keycols (row_id);
|
1-4. Generate Activity and Verify Results
1-4-1. Generate Database Operation
Ø Execute DML
- Source System DB에 접속해서 다음과 같이 DATA를 추가한다.
SQL > insert into mw_addr values(‘전임’,’심은영’,’758’,’eyshim@penta.co.kr’); |
1-4-2. Verify change capture and delivery
Ø Result
- Target Table에 추가된 row_id와 commit_ts의 값을 활인할 수 있다.
SQL > select * from mw_addr; |
위 그림은 Source 오라클 데이터베이스에서 시스템 이벤트 로그에 의해 트리거 된 DDL의 변경 캡쳐를 나타낸다. DDL Operation들은 Target 오라클 데이터베이스로 복제된다.
2-1-2. 지원 범위
Ø Supported Oracle objects and operations for DDL replication
GoldenGate는 Oracle 9i 이후 버전에 대하여 DDL을 지원한다. 그 이전 버전에서는 DDL이 지원되지 않는다. 아래의 objects에 대해서 2 MB 이내의 모든 DDL operation을 지원한다.
*clusters |
tables |
*triggers |
functions |
tablespaces |
types |
indexes |
roles |
views |
packages |
sequences |
materialized views |
procedure |
synonyms |
users |
Ø Non-supported Oracle objects and operations for DDL replication
- Oracle-reserved schemas
아래의 schema name들은 Oracle 소유의 schema들이기 때문에, 반드시 GoldenGate의 DDL 설정에서 제외되어야 한다. GoldenGate는 이 schema들에 대한 DDL은 무시한다.
Schema Name |
Schema Name |
ANONYMOUS AURORA $JIS $UTILITY $AURORA $ORB $UNAUTHENTICATED CTXSYS DBSNMP DMSYS DSSYS EXFSYS MDSYS ODM ODM_MTR OLAPSYS |
ORDPLUGINS ORDSYS OSE$HTTP$ADMIN OUTLN PERFSTAT PUBLIC REPADMIN SYS SYSMAN SYSTEM TRACESVR WKPROXY WKSYS WMSYS XDB |
Ø Oracle Recycle bin
DDL replication을 수행하기 위해서는 반드시 Oracle recycle bin이 ‘OFF’로 설정되어야 한다. Recycle bin이 활성화되어 있을 경우, GoldenGate의 DDL tigger session이 내포된 recycle bin에 의해 tigger 실패를 야기할 수 있는 DDL operation를 받을 수 있게 된다.
- 테스트를 위해 두 개의 Oracle DB instance로 실습환경을 구성하였다.
구분 |
Hostname |
OS Version |
OS Account |
DB SID |
DB Version |
DB Schema |
Source |
mwtech |
GNU / LINUX |
lovelybin |
orcl |
Oracle v11.2 |
mw_team |
Target |
mwtech |
GNU / LINUX |
lovelybin |
ortest |
Oracle v11.2 |
mw_team |
- 이번 실습은 동일한 Layout을 가진 table을 대상으로 하였다.
- ggs와 ggt에 각각 GG의 압축을 풀어 설치한다.
- Source system과 target system 모두 하위 디렉토리를 생성한다.
Shell> ./ggsci GGSCI> CREATE SUBDIRS |
OGG의 DDL SUPPORT는 DDL OPERATION을 TRACKING하는 데이터베이스 오브젝트의 설치를 필요로 하는데, 이것은 TRIGGER와 MARKER, HISTORY TABLE, USER ROLE 등 여러 가지 다른 오브젝트들을 포함하기 위해서이다. DDL OPERATION은 TRIGGER를 ACTIVATE 시키고, MARKER와 HISTORY TABLE에 정보를 쓰게 되고, 다른 오브젝트들은 상태를 확인하고 TRACING을 할 수 있도록 하거나 성능을 향상시킨다.
A. 수행 중인 extract와 replicat를 모두 정지한다
GGSCI > info all GGSCI > stop * |
B. DDL Object를 위한 스크립트의 실행
SQL > @marker_setup |
SQL > @ddl_setup |
SQL > @role_setup |
SQL > @ddl_enable (DDL trigger 실행) |
*note : step을 따라하는 중에 OGG Schema를 입력하라고 나오면, 앞에서 입력한 <owner/schema>를 입력한다.
C. GLOBAL file의 설정
GGSCI > edit params ./GLOBALS |
--GoldenGate GLOBALS parameter file
GGSCHEMA lovelybin; |
GGSCI > stop mgr GGSCI > quit Sh > ./ggsci GGSCI > start mgr |
D. Recyclebin 설정
Recyclebin의 상태를 확인하고 반드시 ‘OFF’로 설정한다.
SQL > show parameter recyclebin SQL > alter system set recyclebin = off scope=spfile; |
E. Schema Owner에 권한 설정
SQL > grant GGS_GGSUSER__ROLE, RESOUCE, DBA to lovelybin; |
A. Supplemental logging 설정과 extract 추가
GGSCI > dblogin userid lovelybin, password ******** GGSCI > add trandata lovelybin.mw_team GGSCI > add extract ext02, tranlog, begin now GGSCI > add rmttrail ./dirdat/rt, extract ext02 |
B. Parameter 설정
GGSCI > edit params ext02 |
extract ext02 userid lovelybin, password ******** rmthost 210.108.181.24, mgrport 3031 rmttrail ./dirdat/rt
DDL INCLUDE MAPPED DDLOPTIONS ADDTRANDATA, REPORT
table lovelybin.mw_team; |
C. Extract 실행
GGSCI > start ext02 GGSCI > info ext02 |
A. Replicat 생성
GGSCI > add replicat rep02, exttrail ./dirdat/rt, checkpointtable lovelybin.ggcpt GGSCI > info rep02 |
B. Parameter 설정
GGSCI > edit params rep02 |
replicat rep02 SETENV (ORACLE_SID="ortest")
userid lovelybin, password ********
assumetargetdefs discardfile ./dirrpt/rep02.dsc, purge
DDL INCLUDE MAPPED DDLOPTIONS REPORT DDLERROR DEFAULT ABEND
map lovelybin.mw_team, target lovelybin.mw_team; |
C. Replicat 실행
GGSCI > start rep02 GGSCI > info rep02 |
A. Mw_team table에 age 라는 column을 추가한다.
SQL > alter table mw_team add ( age varchar2(10) ); |
B. Source system에 추가된 column의 모습
C. Target system에도 동일하게 반영된 모습을 확인할 수 있다.
# 본 가이드는 실습 위주로 작성되었으며 좀더 자세한 내용은 첨부된 문서파일에 있습니다.
'Products > OGG / ODI' 카테고리의 다른 글
[OGG] Goldengate 와 expdp 를 활용한 Zero Down-Time Oracle DB Migration 간략 절차 (0) | 2012.05.07 |
---|---|
[OGG] Goldengate 11gR1 CDC 제품에서 Supplemental Logging 설정 (0) | 2012.04.30 |
OGG_FLAT FILE 생성 (2) | 2012.04.21 |
Oracle GoldenGate Guide 1 - Oracle to Oracle 단방향 동기화 (0) | 2012.04.17 |
Recent Comments